Built with Alectryon, running Coq+SerAPI v8.15.0+0.15.0. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑ Ctrl+↓ to navigate, Ctrl+πŸ–±οΈ to focus. On Mac, use ⌘ instead of Ctrl.
From Coq Require Import ssreflect ssrfun ssrbool.

Require Import Setoid.
From Coq Require Import Ensembles.
From Coq.Logic Require Import FunctionalExtensionality.
From Coq.Logic Require Import PropExtensionality ClassicalFacts.

New coercion path [Bool.Is_true] : bool >-> Sortclass is ambiguous with existing [is_true] : bool >-> Sortclass. [ambiguous-paths,typechecker]
New coercion path [Is_true] : bool >-> Sortclass is ambiguous with existing [is_true] : bool >-> Sortclass. [ambiguous-paths,typechecker]
From MatchingLogic Require Import Syntax Semantics DerivedOperators_Syntax DerivedOperators_Semantics monotonic Utils.Lattice Utils.stdpp_ext IndexManipulation . Import MatchingLogic.Syntax.Notations. Import MatchingLogic.Substitution.Notations. Import MatchingLogic.DerivedOperators_Syntax.Notations. Section with_signature. Context {Ξ£ : Signature}. Open Scope ml_scope.
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern

well_formed_positive (mu , Ο•) β†’ let X := fresh_svar Ο• in let F := Fassoc ρ Ο•^{svar:0↦X} X in let Sfix := eval ρ (mu , Ο•) in F Sfix = Sfix
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern

well_formed_positive (mu , Ο•) β†’ let X := fresh_svar Ο• in let F := Fassoc ρ Ο•^{svar:0↦X} X in let Sfix := eval ρ (mu , Ο•) in F Sfix = Sfix
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern

no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο• β†’ Fassoc ρ Ο•^{svar:0↦fresh_svar Ο•} (fresh_svar Ο•) (eval ρ (mu , Ο•)) = eval ρ (mu , Ο•)
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
X: svar
HeqX: X = fresh_svar Ο•

no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο• β†’ Fassoc ρ Ο•^{svar:0↦X} X (eval ρ (mu , Ο•)) = eval ρ (mu , Ο•)
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X

no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο• β†’ F (eval ρ (mu , Ο•)) = eval ρ (mu , Ο•)
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix: propset M
HeqSfix: Sfix = eval ρ (mu , Ο•)

no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο• β†’ F Sfix = Sfix
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix: propset M
HeqSfix: Sfix = eval ρ (mu , Ο•)
OS:= PropsetOrderedSet M: OrderedSet (propset M)

no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο• β†’ F Sfix = Sfix
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix: propset M
HeqSfix: Sfix = eval ρ (mu , Ο•)
OS:= PropsetOrderedSet M: OrderedSet (propset M)
L:= PowersetLattice M: CompleteLattice (propset M)

no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο• β†’ F Sfix = Sfix
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix: propset M
HeqSfix: Sfix = eval ρ (mu , Ο•)
OS:= PropsetOrderedSet M: OrderedSet (propset M)
L:= PowersetLattice M: CompleteLattice (propset M)
Hwfp: no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο•

F Sfix = Sfix
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix: propset M
HeqSfix: Sfix = eval ρ (mu , Ο•)
OS:= PropsetOrderedSet M: OrderedSet (propset M)
L:= PowersetLattice M: CompleteLattice (propset M)
Hwfp: no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο•

MonotonicFunction F
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix: propset M
HeqSfix: Sfix = eval ρ (mu , Ο•)
OS:= PropsetOrderedSet M: OrderedSet (propset M)
L:= PowersetLattice M: CompleteLattice (propset M)
Hwfp: no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο•
HFmono: MonotonicFunction F
F Sfix = Sfix
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix: propset M
HeqSfix: Sfix = eval ρ (mu , Ο•)
OS:= PropsetOrderedSet M: OrderedSet (propset M)
L:= PowersetLattice M: CompleteLattice (propset M)
Hwfp: no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο•

MonotonicFunction F
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix: propset M
HeqSfix: Sfix = eval ρ (mu , Ο•)
OS:= PropsetOrderedSet M: OrderedSet (propset M)
L:= PowersetLattice M: CompleteLattice (propset M)
Hwfp: no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο•

MonotonicFunction (Fassoc ρ Ο•^{svar:0↦X} X)
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix: propset M
HeqSfix: Sfix = eval ρ (mu , Ο•)
OS:= PropsetOrderedSet M: OrderedSet (propset M)
L:= PowersetLattice M: CompleteLattice (propset M)
Hwfp: no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο•

MonotonicFunction (Ξ» S : propset M, eval (update_svar_val X S ρ) Ο•^{svar:0↦X})
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix: propset M
HeqSfix: Sfix = eval ρ (mu , Ο•)
OS:= PropsetOrderedSet M: OrderedSet (propset M)
L:= PowersetLattice M: CompleteLattice (propset M)
Hwfp: no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο•

well_formed_positive (mu , Ο•)
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix: propset M
HeqSfix: Sfix = eval ρ (mu , Ο•)
OS:= PropsetOrderedSet M: OrderedSet (propset M)
L:= PowersetLattice M: CompleteLattice (propset M)
Hwfp: no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο•
svar_is_fresh_in X Ο•
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix: propset M
HeqSfix: Sfix = eval ρ (mu , Ο•)
OS:= PropsetOrderedSet M: OrderedSet (propset M)
L:= PowersetLattice M: CompleteLattice (propset M)
Hwfp: no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο•

svar_is_fresh_in X Ο•
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix: propset M
HeqSfix: Sfix = eval ρ (mu , Ο•)
OS:= PropsetOrderedSet M: OrderedSet (propset M)
L:= PowersetLattice M: CompleteLattice (propset M)
Hwfp: no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο•

svar_is_fresh_in (fresh_svar Ο•) Ο•
apply set_svar_fresh_is_fresh.
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix: propset M
HeqSfix: Sfix = eval ρ (mu , Ο•)
OS:= PropsetOrderedSet M: OrderedSet (propset M)
L:= PowersetLattice M: CompleteLattice (propset M)
Hwfp: no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο•
HFmono: MonotonicFunction F

F Sfix = Sfix
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix: propset M
HeqSfix: Sfix = eval ρ (mu , Ο•)
OS:= PropsetOrderedSet M: OrderedSet (propset M)
L:= PowersetLattice M: CompleteLattice (propset M)
Hwfp: no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο•
HFmono: MonotonicFunction F

isFixpoint F (LeastFixpointOf F)
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix: propset M
HeqSfix: Sfix = eval ρ (mu , Ο•)
OS:= PropsetOrderedSet M: OrderedSet (propset M)
L:= PowersetLattice M: CompleteLattice (propset M)
Hwfp: no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο•
HFmono: MonotonicFunction F
Ffix: isFixpoint F (LeastFixpointOf F)
F Sfix = Sfix
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix: propset M
HeqSfix: Sfix = eval ρ (mu , Ο•)
OS:= PropsetOrderedSet M: OrderedSet (propset M)
L:= PowersetLattice M: CompleteLattice (propset M)
Hwfp: no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο•
HFmono: MonotonicFunction F

isFixpoint F (LeastFixpointOf F)
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix: propset M
HeqSfix: Sfix = eval ρ (mu , Ο•)
OS:= PropsetOrderedSet M: OrderedSet (propset M)
L:= PowersetLattice M: CompleteLattice (propset M)
Hwfp: no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο•
HFmono: MonotonicFunction F

MonotonicFunction F
apply HFmono.
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix: propset M
HeqSfix: Sfix = eval ρ (mu , Ο•)
OS:= PropsetOrderedSet M: OrderedSet (propset M)
L:= PowersetLattice M: CompleteLattice (propset M)
Hwfp: no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο•
HFmono: MonotonicFunction F
Ffix: isFixpoint F (LeastFixpointOf F)

F Sfix = Sfix
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix: propset M
HeqSfix: Sfix = eval ρ (mu , Ο•)
OS:= PropsetOrderedSet M: OrderedSet (propset M)
L:= PowersetLattice M: CompleteLattice (propset M)
Hwfp: no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο•
HFmono: MonotonicFunction F
Ffix: F (LeastFixpointOf F) = LeastFixpointOf F

F Sfix = Sfix
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix: propset M
OS:= PropsetOrderedSet M: OrderedSet (propset M)
L:= PowersetLattice M: CompleteLattice (propset M)
Hwfp: no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο•
HFmono: MonotonicFunction F
Ffix: F (LeastFixpointOf F) = LeastFixpointOf F
HeqSfix: Sfix = (let X := fresh_svar Ο• in LeastFixpointOf (Ξ» S : propset M, let ρ' := update_svar_val X S ρ in eval ρ' Ο•^{svar:0↦X}))

F Sfix = Sfix
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix: propset M
OS:= PropsetOrderedSet M: OrderedSet (propset M)
L:= PowersetLattice M: CompleteLattice (propset M)
Hwfp: no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο•
HFmono: MonotonicFunction F
Ffix: F (LeastFixpointOf F) = LeastFixpointOf F
HeqSfix: Sfix = LeastFixpointOf (Ξ» S : propset M, eval (update_svar_val (fresh_svar Ο•) S ρ) Ο•^{svar:0↦fresh_svar Ο•})

F Sfix = Sfix
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = (Ξ» S : propset M, eval (update_svar_val X S ρ) Ο•^{svar:0↦X})
Sfix: propset M
OS:= PropsetOrderedSet M: OrderedSet (propset M)
L:= PowersetLattice M: CompleteLattice (propset M)
Hwfp: no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο•
HFmono: MonotonicFunction F
Ffix: F (LeastFixpointOf F) = LeastFixpointOf F
HeqSfix: Sfix = LeastFixpointOf (Ξ» S : propset M, eval (update_svar_val (fresh_svar Ο•) S ρ) Ο•^{svar:0↦fresh_svar Ο•})

F Sfix = Sfix
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
Sfix: propset M
OS:= PropsetOrderedSet M: OrderedSet (propset M)
L:= PowersetLattice M: CompleteLattice (propset M)
Hwfp: no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο•
HFmono: MonotonicFunction F
Ffix: F (LeastFixpointOf F) = LeastFixpointOf F
HeqSfix: Sfix = LeastFixpointOf (Ξ» S : propset M, eval (update_svar_val (fresh_svar Ο•) S ρ) Ο•^{svar:0↦fresh_svar Ο•})
HeqF: F = (Ξ» S : propset M, eval (update_svar_val (fresh_svar Ο•) S ρ) Ο•^{svar:0↦fresh_svar Ο•})

F Sfix = Sfix
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
Sfix: propset M
OS:= PropsetOrderedSet M: OrderedSet (propset M)
L:= PowersetLattice M: CompleteLattice (propset M)
Hwfp: no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο•
HFmono: MonotonicFunction F
Ffix: F (LeastFixpointOf F) = LeastFixpointOf F
HeqF: F = (Ξ» S : propset M, eval (update_svar_val (fresh_svar Ο•) S ρ) Ο•^{svar:0↦fresh_svar Ο•})
HeqSfix: Sfix = LeastFixpointOf F

F Sfix = Sfix
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
Sfix: propset M
OS:= PropsetOrderedSet M: OrderedSet (propset M)
L:= PowersetLattice M: CompleteLattice (propset M)
Hwfp: no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο•
HFmono: MonotonicFunction F
HeqF: F = (Ξ» S : propset M, eval (update_svar_val (fresh_svar Ο•) S ρ) Ο•^{svar:0↦fresh_svar Ο•})
HeqSfix: Sfix = LeastFixpointOf F
Ffix: F Sfix = Sfix

F Sfix = Sfix
apply Ffix. Qed.
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
S: propset M

well_formed_positive (mu , Ο•) β†’ let X := fresh_svar Ο• in let F := Fassoc ρ Ο•^{svar:0↦X} X in let Sfix := eval ρ (mu , Ο•) in F S βŠ† S β†’ Sfix βŠ† S
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
S: propset M

well_formed_positive (mu , Ο•) β†’ let X := fresh_svar Ο• in let F := Fassoc ρ Ο•^{svar:0↦X} X in let Sfix := eval ρ (mu , Ο•) in F S βŠ† S β†’ Sfix βŠ† S
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
S: propset M

no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο• β†’ Fassoc ρ Ο•^{svar:0↦fresh_svar Ο•} (fresh_svar Ο•) S βŠ† S β†’ eval ρ (mu , Ο•) βŠ† S
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
S: propset M
X: svar
HeqX: X = fresh_svar Ο•

no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο• β†’ Fassoc ρ Ο•^{svar:0↦X} X S βŠ† S β†’ eval ρ (mu , Ο•) βŠ† S
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
S: propset M
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X

no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο• β†’ F S βŠ† S β†’ eval ρ (mu , Ο•) βŠ† S
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
S: propset M
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix: propset M
HeqSfix: Sfix = eval ρ (mu , Ο•)

no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο• β†’ F S βŠ† S β†’ Sfix βŠ† S
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
S: propset M
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix: propset M
HeqSfix: Sfix = eval ρ (mu , Ο•)
OS:= PropsetOrderedSet M: OrderedSet (propset M)

no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο• β†’ F S βŠ† S β†’ Sfix βŠ† S
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
S: propset M
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix: propset M
HeqSfix: Sfix = eval ρ (mu , Ο•)
OS:= PropsetOrderedSet M: OrderedSet (propset M)
L:= PowersetLattice M: CompleteLattice (propset M)

no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο• β†’ F S βŠ† S β†’ Sfix βŠ† S
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
S: propset M
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix: propset M
HeqSfix: Sfix = eval ρ (mu , Ο•)
OS:= PropsetOrderedSet M: OrderedSet (propset M)
L:= PowersetLattice M: CompleteLattice (propset M)
Hwfp: no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο•

F S βŠ† S β†’ Sfix βŠ† S
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
S: propset M
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix: propset M
HeqSfix: Sfix = eval ρ (mu , Ο•)
OS:= PropsetOrderedSet M: OrderedSet (propset M)
L:= PowersetLattice M: CompleteLattice (propset M)
Hwfp: no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο•

MonotonicFunction F
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
S: propset M
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix: propset M
HeqSfix: Sfix = eval ρ (mu , Ο•)
OS:= PropsetOrderedSet M: OrderedSet (propset M)
L:= PowersetLattice M: CompleteLattice (propset M)
Hwfp: no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο•
HFmono: MonotonicFunction F
F S βŠ† S β†’ Sfix βŠ† S
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
S: propset M
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix: propset M
HeqSfix: Sfix = eval ρ (mu , Ο•)
OS:= PropsetOrderedSet M: OrderedSet (propset M)
L:= PowersetLattice M: CompleteLattice (propset M)
Hwfp: no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο•

MonotonicFunction F
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
S: propset M
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix: propset M
HeqSfix: Sfix = eval ρ (mu , Ο•)
OS:= PropsetOrderedSet M: OrderedSet (propset M)
L:= PowersetLattice M: CompleteLattice (propset M)
Hwfp: no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο•

MonotonicFunction (Fassoc ρ Ο•^{svar:0↦X} X)
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
S: propset M
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix: propset M
HeqSfix: Sfix = eval ρ (mu , Ο•)
OS:= PropsetOrderedSet M: OrderedSet (propset M)
L:= PowersetLattice M: CompleteLattice (propset M)
Hwfp: no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο•

MonotonicFunction (Ξ» S : propset M, eval (update_svar_val X S ρ) Ο•^{svar:0↦X})
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
S: propset M
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix: propset M
HeqSfix: Sfix = eval ρ (mu , Ο•)
OS:= PropsetOrderedSet M: OrderedSet (propset M)
L:= PowersetLattice M: CompleteLattice (propset M)
Hwfp: no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο•

well_formed_positive (mu , Ο•)
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
S: propset M
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix: propset M
HeqSfix: Sfix = eval ρ (mu , Ο•)
OS:= PropsetOrderedSet M: OrderedSet (propset M)
L:= PowersetLattice M: CompleteLattice (propset M)
Hwfp: no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο•
svar_is_fresh_in X Ο•
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
S: propset M
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix: propset M
HeqSfix: Sfix = eval ρ (mu , Ο•)
OS:= PropsetOrderedSet M: OrderedSet (propset M)
L:= PowersetLattice M: CompleteLattice (propset M)
Hwfp: no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο•

svar_is_fresh_in X Ο•
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
S: propset M
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix: propset M
HeqSfix: Sfix = eval ρ (mu , Ο•)
OS:= PropsetOrderedSet M: OrderedSet (propset M)
L:= PowersetLattice M: CompleteLattice (propset M)
Hwfp: no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο•

svar_is_fresh_in (fresh_svar Ο•) Ο•
apply set_svar_fresh_is_fresh.
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
S: propset M
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix: propset M
HeqSfix: Sfix = eval ρ (mu , Ο•)
OS:= PropsetOrderedSet M: OrderedSet (propset M)
L:= PowersetLattice M: CompleteLattice (propset M)
Hwfp: no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο•
HFmono: MonotonicFunction F

F S βŠ† S β†’ Sfix βŠ† S
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
S: propset M
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix: propset M
HeqSfix: Sfix = eval ρ (mu , Ο•)
OS:= PropsetOrderedSet M: OrderedSet (propset M)
L:= PowersetLattice M: CompleteLattice (propset M)
Hwfp: no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο•
HFmono: MonotonicFunction F

LeastFixpointOf F = Sfix
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
S: propset M
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix: propset M
HeqSfix: Sfix = eval ρ (mu , Ο•)
OS:= PropsetOrderedSet M: OrderedSet (propset M)
L:= PowersetLattice M: CompleteLattice (propset M)
Hwfp: no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο•
HFmono: MonotonicFunction F
Hlfp: LeastFixpointOf F = Sfix
F S βŠ† S β†’ Sfix βŠ† S
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
S: propset M
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix: propset M
HeqSfix: Sfix = eval ρ (mu , Ο•)
OS:= PropsetOrderedSet M: OrderedSet (propset M)
L:= PowersetLattice M: CompleteLattice (propset M)
Hwfp: no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο•
HFmono: MonotonicFunction F

LeastFixpointOf F = Sfix
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
S: propset M
OS:= PropsetOrderedSet M: OrderedSet (propset M)
L:= PowersetLattice M: CompleteLattice (propset M)
Hwfp: no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο•
HFmono: MonotonicFunction (Fassoc ρ Ο•^{svar:0↦fresh_svar Ο•} (fresh_svar Ο•))

LeastFixpointOf (Fassoc ρ Ο•^{svar:0↦fresh_svar Ο•} (fresh_svar Ο•)) = eval ρ (mu , Ο•)
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
S: propset M
OS:= PropsetOrderedSet M: OrderedSet (propset M)
L:= PowersetLattice M: CompleteLattice (propset M)
Hwfp: no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο•
HFmono: MonotonicFunction (Fassoc ρ Ο•^{svar:0↦fresh_svar Ο•} (fresh_svar Ο•))

LeastFixpointOf (Fassoc ρ Ο•^{svar:0↦fresh_svar Ο•} (fresh_svar Ο•)) = (let X := fresh_svar Ο• in LeastFixpointOf (Ξ» S : propset M, let ρ' := update_svar_val X S ρ in eval ρ' Ο•^{svar:0↦X}))
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
S: propset M
OS:= PropsetOrderedSet M: OrderedSet (propset M)
L:= PowersetLattice M: CompleteLattice (propset M)
Hwfp: no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο•
HFmono: MonotonicFunction (Fassoc ρ Ο•^{svar:0↦fresh_svar Ο•} (fresh_svar Ο•))

LeastFixpointOf (Fassoc ρ Ο•^{svar:0↦fresh_svar Ο•} (fresh_svar Ο•)) = LeastFixpointOf (Ξ» S : propset M, eval (update_svar_val (fresh_svar Ο•) S ρ) Ο•^{svar:0↦fresh_svar Ο•})
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
S: propset M
OS:= PropsetOrderedSet M: OrderedSet (propset M)
L:= PowersetLattice M: CompleteLattice (propset M)
Hwfp: no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο•
HFmono: MonotonicFunction (Fassoc ρ Ο•^{svar:0↦fresh_svar Ο•} (fresh_svar Ο•))

LeastFixpointOf (Ξ» S : propset M, eval (update_svar_val (fresh_svar Ο•) S ρ) Ο•^{svar:0↦fresh_svar Ο•}) = LeastFixpointOf (Ξ» S : propset M, eval (update_svar_val (fresh_svar Ο•) S ρ) Ο•^{svar:0↦fresh_svar Ο•})
reflexivity.
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
S: propset M
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix: propset M
HeqSfix: Sfix = eval ρ (mu , Ο•)
OS:= PropsetOrderedSet M: OrderedSet (propset M)
L:= PowersetLattice M: CompleteLattice (propset M)
Hwfp: no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο•
HFmono: MonotonicFunction F
Hlfp: LeastFixpointOf F = Sfix

F S βŠ† S β†’ Sfix βŠ† S
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
S: propset M
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix: propset M
HeqSfix: Sfix = eval ρ (mu , Ο•)
OS:= PropsetOrderedSet M: OrderedSet (propset M)
L:= PowersetLattice M: CompleteLattice (propset M)
Hwfp: no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο•
HFmono: MonotonicFunction F
Hlfp: LeastFixpointOf F = Sfix
Hincl: F S βŠ† S

Sfix βŠ† S
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
S: propset M
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix: propset M
HeqSfix: Sfix = eval ρ (mu , Ο•)
OS:= PropsetOrderedSet M: OrderedSet (propset M)
L:= PowersetLattice M: CompleteLattice (propset M)
Hwfp: no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο•
HFmono: MonotonicFunction F
Hlfp: LeastFixpointOf F = Sfix
Hincl: F S βŠ† S
Hleast: leq (F S) S β†’ leq (LeastFixpointOf F) S

Sfix βŠ† S
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
S: propset M
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix: propset M
HeqSfix: Sfix = eval ρ (mu , Ο•)
OS:= PropsetOrderedSet M: OrderedSet (propset M)
L:= PowersetLattice M: CompleteLattice (propset M)
Hwfp: no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο•
HFmono: MonotonicFunction F
Hlfp: LeastFixpointOf F = Sfix
Hincl: F S βŠ† S
Hleast: F S βŠ† S β†’ LeastFixpointOf F βŠ† S

Sfix βŠ† S
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
S: propset M
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix: propset M
HeqSfix: Sfix = eval ρ (mu , Ο•)
OS:= PropsetOrderedSet M: OrderedSet (propset M)
L:= PowersetLattice M: CompleteLattice (propset M)
Hwfp: no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο•
HFmono: MonotonicFunction F
Hlfp: LeastFixpointOf F = Sfix
Hincl: F S βŠ† S
Hleast: LeastFixpointOf F βŠ† S

Sfix βŠ† S
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
S: propset M
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix: propset M
HeqSfix: Sfix = eval ρ (mu , Ο•)
OS:= PropsetOrderedSet M: OrderedSet (propset M)
L:= PowersetLattice M: CompleteLattice (propset M)
Hwfp: no_negative_occurrence_db_b 0 Ο• && well_formed_positive Ο•
HFmono: MonotonicFunction F
Hlfp: LeastFixpointOf F = Sfix
Hincl: F S βŠ† S
Hleast: Sfix βŠ† S

Sfix βŠ† S
apply Hleast. Qed.
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
Sfix: propset M

well_formed_positive (mu , Ο•) β†’ let X := fresh_svar Ο• in let F := Fassoc ρ Ο•^{svar:0↦X} X in F Sfix βŠ† Sfix β†’ (βˆ€ S : propset M, F S βŠ† S β†’ Sfix βŠ† S) β†’ Sfix = eval ρ (mu , Ο•)
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
Sfix: propset M

well_formed_positive (mu , Ο•) β†’ let X := fresh_svar Ο• in let F := Fassoc ρ Ο•^{svar:0↦X} X in F Sfix βŠ† Sfix β†’ (βˆ€ S : propset M, F S βŠ† S β†’ Sfix βŠ† S) β†’ Sfix = eval ρ (mu , Ο•)
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
Sfix: propset M
Hwfp: well_formed_positive (mu , Ο•)

let X := fresh_svar Ο• in let F := Fassoc ρ Ο•^{svar:0↦X} X in F Sfix βŠ† Sfix β†’ (βˆ€ S : propset M, F S βŠ† S β†’ Sfix βŠ† S) β†’ Sfix = eval ρ (mu , Ο•)
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
Sfix: propset M
Hwfp: well_formed_positive (mu , Ο•)

Fassoc ρ Ο•^{svar:0↦fresh_svar Ο•} (fresh_svar Ο•) Sfix βŠ† Sfix β†’ (βˆ€ S : propset M, Fassoc ρ Ο•^{svar:0↦fresh_svar Ο•} (fresh_svar Ο•) S βŠ† S β†’ Sfix βŠ† S) β†’ Sfix = eval ρ (mu , Ο•)
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
Sfix: propset M
Hwfp: well_formed_positive (mu , Ο•)
X: svar
HeqX: X = fresh_svar Ο•

Fassoc ρ Ο•^{svar:0↦X} X Sfix βŠ† Sfix β†’ (βˆ€ S : propset M, Fassoc ρ Ο•^{svar:0↦X} X S βŠ† S β†’ Sfix βŠ† S) β†’ Sfix = eval ρ (mu , Ο•)
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
Sfix: propset M
Hwfp: well_formed_positive (mu , Ο•)
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X

F Sfix βŠ† Sfix β†’ (βˆ€ S : propset M, F S βŠ† S β†’ Sfix βŠ† S) β†’ Sfix = eval ρ (mu , Ο•)
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
Sfix: propset M
Hwfp: well_formed_positive (mu , Ο•)
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Hprefix: F Sfix βŠ† Sfix
Hleast: βˆ€ S : propset M, F S βŠ† S β†’ Sfix βŠ† S

Sfix = eval ρ (mu , Ο•)
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
Sfix: propset M
Hwfp: well_formed_positive (mu , Ο•)
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Hprefix: F Sfix βŠ† Sfix
Hleast: βˆ€ S : propset M, F S βŠ† S β†’ Sfix βŠ† S

Sfix = (let X := fresh_svar Ο• in LeastFixpointOf (Ξ» S : propset M, let ρ' := update_svar_val X S ρ in eval ρ' Ο•^{svar:0↦X}))
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
Sfix: propset M
Hwfp: well_formed_positive (mu , Ο•)
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Hprefix: F Sfix βŠ† Sfix
Hleast: βˆ€ S : propset M, F S βŠ† S β†’ Sfix βŠ† S

Sfix = LeastFixpointOf (Ξ» S : propset M, eval (update_svar_val (fresh_svar Ο•) S ρ) Ο•^{svar:0↦fresh_svar Ο•})
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
Sfix: propset M
Hwfp: well_formed_positive (mu , Ο•)
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = (Ξ» S : propset M, eval (update_svar_val X S ρ) Ο•^{svar:0↦X})
Hprefix: F Sfix βŠ† Sfix
Hleast: βˆ€ S : propset M, F S βŠ† S β†’ Sfix βŠ† S

Sfix = LeastFixpointOf (Ξ» S : propset M, eval (update_svar_val (fresh_svar Ο•) S ρ) Ο•^{svar:0↦fresh_svar Ο•})
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
Sfix: propset M
Hwfp: well_formed_positive (mu , Ο•)
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
Hprefix: F Sfix βŠ† Sfix
Hleast: βˆ€ S : propset M, F S βŠ† S β†’ Sfix βŠ† S
HeqF: F = (Ξ» S : propset M, eval (update_svar_val (fresh_svar Ο•) S ρ) Ο•^{svar:0↦fresh_svar Ο•})

Sfix = LeastFixpointOf (Ξ» S : propset M, eval (update_svar_val (fresh_svar Ο•) S ρ) Ο•^{svar:0↦fresh_svar Ο•})
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
Sfix: propset M
Hwfp: well_formed_positive (mu , Ο•)
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
Hprefix: F Sfix βŠ† Sfix
Hleast: βˆ€ S : propset M, F S βŠ† S β†’ Sfix βŠ† S
HeqF: F = (Ξ» S : propset M, eval (update_svar_val (fresh_svar Ο•) S ρ) Ο•^{svar:0↦fresh_svar Ο•})

Sfix = LeastFixpointOf F
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
Sfix: propset M
Hwfp: well_formed_positive (mu , Ο•)
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
Hprefix: F Sfix βŠ† Sfix
Hleast: βˆ€ S : propset M, F S βŠ† S β†’ Sfix βŠ† S
HeqF: F = (Ξ» S : propset M, eval (update_svar_val (fresh_svar Ο•) S ρ) Ο•^{svar:0↦fresh_svar Ο•})

leq (F Sfix) Sfix
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
Sfix: propset M
Hwfp: well_formed_positive (mu , Ο•)
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
Hprefix: F Sfix βŠ† Sfix
Hleast: βˆ€ S : propset M, F S βŠ† S β†’ Sfix βŠ† S
HeqF: F = (Ξ» S : propset M, eval (update_svar_val (fresh_svar Ο•) S ρ) Ο•^{svar:0↦fresh_svar Ο•})
βˆ€ x : propset M, leq (F x) x β†’ leq Sfix x
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
Sfix: propset M
Hwfp: well_formed_positive (mu , Ο•)
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
Hprefix: F Sfix βŠ† Sfix
Hleast: βˆ€ S : propset M, F S βŠ† S β†’ Sfix βŠ† S
HeqF: F = (Ξ» S : propset M, eval (update_svar_val (fresh_svar Ο•) S ρ) Ο•^{svar:0↦fresh_svar Ο•})

leq (F Sfix) Sfix
apply Hprefix.
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
Sfix: propset M
Hwfp: well_formed_positive (mu , Ο•)
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
Hprefix: F Sfix βŠ† Sfix
Hleast: βˆ€ S : propset M, F S βŠ† S β†’ Sfix βŠ† S
HeqF: F = (Ξ» S : propset M, eval (update_svar_val (fresh_svar Ο•) S ρ) Ο•^{svar:0↦fresh_svar Ο•})

βˆ€ x : propset M, leq (F x) x β†’ leq Sfix x
apply Hleast. Qed.
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
Sfix: propset M

well_formed_positive (mu , Ο•) β†’ let X := fresh_svar Ο• in let F := Fassoc ρ Ο•^{svar:0↦X} X in F Sfix βŠ† Sfix ∧ (βˆ€ S : propset M, F S βŠ† S β†’ Sfix βŠ† S) ↔ Sfix = eval ρ (mu , Ο•)
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
Sfix: propset M

well_formed_positive (mu , Ο•) β†’ let X := fresh_svar Ο• in let F := Fassoc ρ Ο•^{svar:0↦X} X in F Sfix βŠ† Sfix ∧ (βˆ€ S : propset M, F S βŠ† S β†’ Sfix βŠ† S) ↔ Sfix = eval ρ (mu , Ο•)
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
Sfix: propset M
Hwfp: well_formed_positive (mu , Ο•)

let X := fresh_svar Ο• in let F := Fassoc ρ Ο•^{svar:0↦X} X in F Sfix βŠ† Sfix ∧ (βˆ€ S : propset M, F S βŠ† S β†’ Sfix βŠ† S) ↔ Sfix = eval ρ (mu , Ο•)
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
Sfix: propset M
Hwfp: well_formed_positive (mu , Ο•)

Fassoc ρ Ο•^{svar:0↦fresh_svar Ο•} (fresh_svar Ο•) Sfix βŠ† Sfix ∧ (βˆ€ S : propset M, Fassoc ρ Ο•^{svar:0↦fresh_svar Ο•} (fresh_svar Ο•) S βŠ† S β†’ Sfix βŠ† S) ↔ Sfix = eval ρ (mu , Ο•)
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
Sfix: propset M
Hwfp: well_formed_positive (mu , Ο•)
X: svar
HeqX: X = fresh_svar Ο•

Fassoc ρ Ο•^{svar:0↦X} X Sfix βŠ† Sfix ∧ (βˆ€ S : propset M, Fassoc ρ Ο•^{svar:0↦X} X S βŠ† S β†’ Sfix βŠ† S) ↔ Sfix = eval ρ (mu , Ο•)
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
Sfix: propset M
Hwfp: well_formed_positive (mu , Ο•)
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X

F Sfix βŠ† Sfix ∧ (βˆ€ S : propset M, F S βŠ† S β†’ Sfix βŠ† S) ↔ Sfix = eval ρ (mu , Ο•)
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
Sfix: propset M
Hwfp: well_formed_positive (mu , Ο•)
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix': propset M
HeqSfix': Sfix' = eval ρ (mu , Ο•)

F Sfix βŠ† Sfix ∧ (βˆ€ S : propset M, F S βŠ† S β†’ Sfix βŠ† S) ↔ Sfix = Sfix'
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
Sfix: propset M
Hwfp: well_formed_positive (mu , Ο•)
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix': propset M
HeqSfix': Sfix' = eval ρ (mu , Ο•)

F Sfix βŠ† Sfix ∧ (βˆ€ S : propset M, F S βŠ† S β†’ Sfix βŠ† S) β†’ Sfix = Sfix'
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
Sfix: propset M
Hwfp: well_formed_positive (mu , Ο•)
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix': propset M
HeqSfix': Sfix' = eval ρ (mu , Ο•)
Sfix = Sfix' β†’ F Sfix βŠ† Sfix ∧ (βˆ€ S : propset M, F S βŠ† S β†’ Sfix βŠ† S)
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
Sfix: propset M
Hwfp: well_formed_positive (mu , Ο•)
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix': propset M
HeqSfix': Sfix' = eval ρ (mu , Ο•)

F Sfix βŠ† Sfix ∧ (βˆ€ S : propset M, F S βŠ† S β†’ Sfix βŠ† S) β†’ Sfix = Sfix'
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
Sfix: propset M
Hwfp: well_formed_positive (mu , Ο•)
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix': propset M
HeqSfix': Sfix' = eval ρ (mu , Ο•)
H1: F Sfix βŠ† Sfix
H2: βˆ€ S : propset M, F S βŠ† S β†’ Sfix βŠ† S

Sfix = Sfix'
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
Sfix: propset M
Hwfp: well_formed_positive (mu , Ο•)
H2: βˆ€ S : propset M, Fassoc ρ Ο•^{svar:0↦fresh_svar Ο•} (fresh_svar Ο•) S βŠ† S β†’ Sfix βŠ† S
H1: Fassoc ρ Ο•^{svar:0↦fresh_svar Ο•} (fresh_svar Ο•) Sfix βŠ† Sfix

Sfix = eval ρ (mu , Ο•)
auto using eval_mu_if_lfp.
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
Sfix: propset M
Hwfp: well_formed_positive (mu , Ο•)
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix': propset M
HeqSfix': Sfix' = eval ρ (mu , Ο•)

Sfix = Sfix' β†’ F Sfix βŠ† Sfix ∧ (βˆ€ S : propset M, F S βŠ† S β†’ Sfix βŠ† S)
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
Sfix: propset M
Hwfp: well_formed_positive (mu , Ο•)
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix': propset M
HeqSfix': Sfix' = eval ρ (mu , Ο•)
H: Sfix = Sfix'

F Sfix βŠ† Sfix ∧ (βˆ€ S : propset M, F S βŠ† S β†’ Sfix βŠ† S)
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
Sfix: propset M
Hwfp: well_formed_positive (mu , Ο•)
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix': propset M
HeqSfix': Sfix' = eval ρ (mu , Ο•)
H: Sfix = Sfix'

F Sfix βŠ† Sfix
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
Sfix: propset M
Hwfp: well_formed_positive (mu , Ο•)
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix': propset M
HeqSfix': Sfix' = eval ρ (mu , Ο•)
H: Sfix = Sfix'
βˆ€ S : propset M, F S βŠ† S β†’ Sfix βŠ† S
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
Sfix: propset M
Hwfp: well_formed_positive (mu , Ο•)
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix': propset M
HeqSfix': Sfix' = eval ρ (mu , Ο•)
H: Sfix = Sfix'

F Sfix βŠ† Sfix
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
Hwfp: well_formed_positive (mu , Ο•)

Fassoc ρ Ο•^{svar:0↦fresh_svar Ο•} (fresh_svar Ο•) (eval ρ (mu , Ο•)) βŠ† eval ρ (mu , Ο•)
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
Hwfp: well_formed_positive (mu , Ο•)

Fassoc ρ Ο•^{svar:0↦fresh_svar Ο•} (fresh_svar Ο•) (eval ρ (mu , Ο•)) = eval ρ (mu , Ο•)
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
Hwfp: well_formed_positive (mu , Ο•)
H: Fassoc ρ Ο•^{svar:0↦fresh_svar Ο•} (fresh_svar Ο•) (eval ρ (mu , Ο•)) = eval ρ (mu , Ο•)
Fassoc ρ Ο•^{svar:0↦fresh_svar Ο•} (fresh_svar Ο•) (eval ρ (mu , Ο•)) βŠ† eval ρ (mu , Ο•)
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
Hwfp: well_formed_positive (mu , Ο•)

well_formed_positive (mu , Ο•)
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
Hwfp: well_formed_positive (mu , Ο•)
H: Fassoc ρ Ο•^{svar:0↦fresh_svar Ο•} (fresh_svar Ο•) (eval ρ (mu , Ο•)) = eval ρ (mu , Ο•)
Fassoc ρ Ο•^{svar:0↦fresh_svar Ο•} (fresh_svar Ο•) (eval ρ (mu , Ο•)) βŠ† eval ρ (mu , Ο•)
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
Hwfp: well_formed_positive (mu , Ο•)
H: Fassoc ρ Ο•^{svar:0↦fresh_svar Ο•} (fresh_svar Ο•) (eval ρ (mu , Ο•)) = eval ρ (mu , Ο•)

Fassoc ρ Ο•^{svar:0↦fresh_svar Ο•} (fresh_svar Ο•) (eval ρ (mu , Ο•)) βŠ† eval ρ (mu , Ο•)
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
Hwfp: well_formed_positive (mu , Ο•)
H: Fassoc ρ Ο•^{svar:0↦fresh_svar Ο•} (fresh_svar Ο•) (eval ρ (mu , Ο•)) = eval ρ (mu , Ο•)

eval ρ (mu , Ο•) βŠ† eval ρ (mu , Ο•)
apply reflexivity.
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
Sfix: propset M
Hwfp: well_formed_positive (mu , Ο•)
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix': propset M
HeqSfix': Sfix' = eval ρ (mu , Ο•)
H: Sfix = Sfix'

βˆ€ S : propset M, F S βŠ† S β†’ Sfix βŠ† S
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
Sfix: propset M
Hwfp: well_formed_positive (mu , Ο•)
X: svar
HeqX: X = fresh_svar Ο•
F: propset M β†’ propset M
HeqF: F = Fassoc ρ Ο•^{svar:0↦X} X
Sfix': propset M
HeqSfix': Sfix' = eval ρ (mu , Ο•)
H: Sfix = Sfix'
S: propset M

F S βŠ† S β†’ Sfix βŠ† S
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
Hwfp: well_formed_positive (mu , Ο•)
S: propset M

Fassoc ρ Ο•^{svar:0↦fresh_svar Ο•} (fresh_svar Ο•) S βŠ† S β†’ eval ρ (mu , Ο•) βŠ† S
Ξ£: Signature
M: Model
ρ: Valuation
Ο•: Pattern
Hwfp: well_formed_positive (mu , Ο•)
S: propset M

well_formed_positive (mu , Ο•)
apply Hwfp. Qed. (* mu X. base \/ step X *) (* [Nats] = mu X. 0 \/ succ X *) (* [Nats] = \{ x | \ex x0,x1,..x_n . x0 \in 0 /\ x(i+1) \in succ xi }*) (* 0, 1, 2,... x*) Section inductive_generation. Context (base step : Pattern). Let patt_ind_gen_body := (patt_or (nest_mu base) (patt_app (nest_mu step) (patt_bound_svar 0))). Let patt_ind_gen_simple_body := (patt_or base (patt_app step (patt_free_svar (fresh_svar patt_ind_gen_body)))). Definition patt_ind_gen := patt_mu patt_ind_gen_body. Hypothesis (Hwfpbase : well_formed_positive base). Hypothesis (Hwfpstep : well_formed_positive step).
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step

well_formed_positive patt_ind_gen
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step

well_formed_positive patt_ind_gen
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step

well_formed_positive (mu , patt_ind_gen_body)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step

[&& no_negative_occurrence_db_b 0 patt_ind_gen_body, well_formed_positive (nest_mu base) && true, well_formed_positive (nest_mu step) & true]
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step

[&& no_negative_occurrence_db_b 0 patt_ind_gen_body, well_formed_positive (nest_mu base) & well_formed_positive (nest_mu step)]
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step

[&& no_negative_occurrence_db_b 0 patt_ind_gen_body, well_formed_positive base & well_formed_positive step]
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step

[&& no_negative_occurrence_db_b 0 patt_ind_gen_body, true & well_formed_positive step]
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step

[&& no_negative_occurrence_db_b 0 patt_ind_gen_body, true & true]
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step

no_negative_occurrence_db_b 0 patt_ind_gen_body
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step

[&& (fix no_negative_occurrence_db_b (dbi : db_index) (Ο• : Pattern) {struct Ο•} : bool := match Ο• with | ϕ₁ $ Ο•β‚‚ => no_negative_occurrence_db_b dbi ϕ₁ && no_negative_occurrence_db_b dbi Ο•β‚‚ | ϕ₁ ---> Ο•β‚‚ => no_positive_occurrence_db_b dbi ϕ₁ && no_negative_occurrence_db_b dbi Ο•β‚‚ | ex , Ο•' => no_negative_occurrence_db_b dbi Ο•' | mu , Ο•' => no_negative_occurrence_db_b (S dbi) Ο•' | _ => true end with no_positive_occurrence_db_b (dbi : db_index) (Ο• : Pattern) {struct Ο•} : bool := match Ο• with | patt_bound_svar n => if decide (n = dbi) then false else true | ϕ₁ $ Ο•β‚‚ => no_positive_occurrence_db_b dbi ϕ₁ && no_positive_occurrence_db_b dbi Ο•β‚‚ | ϕ₁ ---> Ο•β‚‚ => no_negative_occurrence_db_b dbi ϕ₁ && no_positive_occurrence_db_b dbi Ο•β‚‚ | ex , Ο•' => no_positive_occurrence_db_b dbi Ο•' | mu , Ο•' => no_positive_occurrence_db_b (S dbi) Ο•' | _ => true end for no_negative_occurrence_db_b) 0 (nest_mu base) && true, no_negative_occurrence_db_b 0 (nest_mu step) & true]
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step

[&& no_negative_occurrence_db_b 0 (nest_mu base) && true, no_negative_occurrence_db_b 0 (nest_mu step) & true]
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step

[&& (if decide (0 < 0) then no_negative_occurrence_db_b 0 base else if decide (0 < 0 + 1) then true else no_negative_occurrence_db_b (0 - 1) base) && true, if decide (0 < 0) then no_negative_occurrence_db_b 0 step else if decide (0 < 0 + 1) then true else no_negative_occurrence_db_b (0 - 1) step & true]
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step

true
auto. Qed.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
X: svar

svar_is_fresh_in X patt_ind_gen_body β†’ eval ρ patt_ind_gen_body^{svar:0↦X} = eval ρ (base or step $ patt_free_svar X)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
X: svar

svar_is_fresh_in X patt_ind_gen_body β†’ eval ρ patt_ind_gen_body^{svar:0↦X} = eval ρ (base or step $ patt_free_svar X)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
X: svar
Hfr: svar_is_fresh_in X patt_ind_gen_body

eval ρ patt_ind_gen_body^{svar:0↦X} = eval ρ (base or step $ patt_free_svar X)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
X: svar
Hfr: X βˆ‰ free_svars patt_ind_gen_body

eval ρ patt_ind_gen_body^{svar:0↦X} = eval ρ (base or step $ patt_free_svar X)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
X: svar
Hfr: X βˆ‰ free_svars (nest_mu base) βˆͺ βˆ… βˆͺ (free_svars (nest_mu step) βˆͺ βˆ…)

eval ρ patt_ind_gen_body^{svar:0↦X} = eval ρ (base or step $ patt_free_svar X)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
X: svar
Hfr: X βˆ‰ free_svars base βˆͺ free_svars step

eval ρ patt_ind_gen_body^{svar:0↦X} = eval ρ (base or step $ patt_free_svar X)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
X: svar
Hfr: (X βˆ‰ free_svars base) ∧ X βˆ‰ free_svars step

eval ρ patt_ind_gen_body^{svar:0↦X} = eval ρ (base or step $ patt_free_svar X)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
X: svar
Hfr1: X βˆ‰ free_svars base
Hfr2: X βˆ‰ free_svars step

eval ρ patt_ind_gen_body^{svar:0↦X} = eval ρ (base or step $ patt_free_svar X)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
X: svar
Hfr1: X βˆ‰ free_svars base
Hfr2: X βˆ‰ free_svars step

eval ρ (nest_mu base or nest_mu step $ BoundVarSugar.B0)^{svar:0↦X} = eval ρ (base or step $ patt_free_svar X)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
X: svar
Hfr1: X βˆ‰ free_svars base
Hfr2: X βˆ‰ free_svars step

eval ρ (nest_mu base or nest_mu step $ BoundVarSugar.B0)^[svar:0↦ patt_free_svar X] = eval ρ (base or step $ patt_free_svar X)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
X: svar
Hfr1: X βˆ‰ free_svars base
Hfr2: X βˆ‰ free_svars step

eval ρ ((nest_mu base)^[svar:0↦patt_free_svar X] or (nest_mu step)^[svar:0↦patt_free_svar X] $ BoundVarSugar.B0^[svar:0↦patt_free_svar X]) = eval ρ (base or step $ patt_free_svar X)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
X: svar
Hfr1: X βˆ‰ free_svars base
Hfr2: X βˆ‰ free_svars step

eval ρ ((nest_mu base)^[svar:0↦patt_free_svar X] or (nest_mu step)^[svar:0↦patt_free_svar X] $ patt_free_svar X) = eval ρ (base or step $ patt_free_svar X)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
X: svar
Hfr1: X βˆ‰ free_svars base
Hfr2: X βˆ‰ free_svars step

eval ρ (nest_mu base)^[svar:0↦patt_free_svar X] βˆͺ eval ρ ((nest_mu step)^[svar:0↦patt_free_svar X] $ patt_free_svar X) = eval ρ base βˆͺ eval ρ (step $ patt_free_svar X)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
X: svar
Hfr1: X βˆ‰ free_svars base
Hfr2: X βˆ‰ free_svars step

eval ρ (nest_mu_aux 0 1 base)^[svar:0↦patt_free_svar X] βˆͺ eval ρ ((nest_mu_aux 0 1 step)^[svar:0↦patt_free_svar X] $ patt_free_svar X) = eval ρ base βˆͺ eval ρ (step $ patt_free_svar X)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
X: svar
Hfr1: X βˆ‰ free_svars base
Hfr2: X βˆ‰ free_svars step

eval ρ base βˆͺ eval ρ (step $ patt_free_svar X) = eval ρ base βˆͺ eval ρ (step $ patt_free_svar X)
reflexivity. Qed. Section with_eval. Context (M : @Model Ξ£). Context (ρ : @Valuation Ξ£ M). Let F := let X := fresh_svar patt_ind_gen_body in @Fassoc Ξ£ M ρ (patt_ind_gen_body^{svar: 0 ↦ X}) X. (* Lemma svar_open_patt_ind_gen_body_assoc S: let X := fresh_svar patt_ind_gen_body in eval ρₑ (update_svar_val X S ρₛ) (svar_open 0 X patt_ind_gen_body) = F S. Proof. reflexivity. (* cbv zeta. rewrite svar_open_patt_ind_gen_body_simpl. { apply set_svar_fresh_is_fresh. } subst F. unfold Fassoc. rewrite svar_open_patt_ind_gen_body_simpl. { apply set_svar_fresh_is_fresh. } reflexivity.*) Qed. *) (* I can imagine this lemma to be proven automatically. *)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M

F = (Ξ» A : propset M, eval ρ base βˆͺ app_ext (eval ρ step) A)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M

F = (Ξ» A : propset M, eval ρ base βˆͺ app_ext (eval ρ step) A)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M

Fassoc ρ patt_ind_gen_body^{svar:0↦fresh_svar patt_ind_gen_body} (fresh_svar patt_ind_gen_body) = (Ξ» A : propset M, eval ρ base βˆͺ app_ext (eval ρ step) A)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M

(Ξ» S : propset M, eval (update_svar_val (fresh_svar patt_ind_gen_body) S ρ) patt_ind_gen_body^{svar:0↦fresh_svar patt_ind_gen_body}) = (Ξ» A : propset M, eval ρ base βˆͺ app_ext (eval ρ step) A)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M

βˆ€ x : propset M, eval (update_svar_val (fresh_svar patt_ind_gen_body) x ρ) patt_ind_gen_body^{svar:0↦fresh_svar patt_ind_gen_body} = eval ρ base βˆͺ app_ext (eval ρ step) x
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
A: propset M

eval (update_svar_val (fresh_svar patt_ind_gen_body) A ρ) patt_ind_gen_body^{svar:0↦fresh_svar patt_ind_gen_body} = eval ρ base βˆͺ app_ext (eval ρ step) A
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
A: propset M

svar_is_fresh_in (fresh_svar patt_ind_gen_body) patt_ind_gen_body
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
A: propset M
eval (update_svar_val (fresh_svar patt_ind_gen_body) A ρ) (base or step $ patt_free_svar (fresh_svar patt_ind_gen_body)) = eval ρ base βˆͺ app_ext (eval ρ step) A
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
A: propset M

svar_is_fresh_in (fresh_svar patt_ind_gen_body) patt_ind_gen_body
apply set_svar_fresh_is_fresh.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
A: propset M

eval (update_svar_val (fresh_svar patt_ind_gen_body) A ρ) (base or step $ patt_free_svar (fresh_svar patt_ind_gen_body)) = eval ρ base βˆͺ app_ext (eval ρ step) A
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
A: propset M

eval (update_svar_val (fresh_svar patt_ind_gen_body) A ρ) base βˆͺ eval (update_svar_val (fresh_svar patt_ind_gen_body) A ρ) (step $ patt_free_svar (fresh_svar patt_ind_gen_body)) = eval ρ base βˆͺ app_ext (eval ρ step) A
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
A: propset M

eval (update_svar_val (fresh_svar patt_ind_gen_body) A ρ) base βˆͺ app_ext (eval (update_svar_val (fresh_svar patt_ind_gen_body) A ρ) step) (eval (update_svar_val (fresh_svar patt_ind_gen_body) A ρ) (patt_free_svar (fresh_svar patt_ind_gen_body))) = eval ρ base βˆͺ app_ext (eval ρ step) A
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
A: propset M

eval (update_svar_val (fresh_svar patt_ind_gen_body) A ρ) base βˆͺ app_ext (eval (update_svar_val (fresh_svar patt_ind_gen_body) A ρ) step) (svar_valuation (update_svar_val (fresh_svar patt_ind_gen_body) A ρ) (fresh_svar patt_ind_gen_body)) = eval ρ base βˆͺ app_ext (eval ρ step) A
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
A: propset M

eval (update_svar_val (fresh_svar patt_ind_gen_body) A ρ) base βˆͺ app_ext (eval (update_svar_val (fresh_svar patt_ind_gen_body) A ρ) step) A = eval ρ base βˆͺ app_ext (eval ρ step) A
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
A: propset M

svar_is_fresh_in (fresh_svar patt_ind_gen_body) base
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
A: propset M
eval ρ base βˆͺ app_ext (eval (update_svar_val (fresh_svar patt_ind_gen_body) A ρ) step) A = eval ρ base βˆͺ app_ext (eval ρ step) A
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
A: propset M

svar_is_fresh_in (fresh_svar patt_ind_gen_body) base
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
A: propset M

free_svars base βŠ† free_svars ?Ο•β‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
A: propset M
svar_is_fresh_in (fresh_svar patt_ind_gen_body) ?Ο•β‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
A: propset M

svar_is_fresh_in (fresh_svar patt_ind_gen_body) ?Ο•β‚‚
apply set_svar_fresh_is_fresh.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
A: propset M

free_svars base βŠ† free_svars patt_ind_gen_body
solve_free_svars_inclusion 5.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
A: propset M

eval ρ base βˆͺ app_ext (eval (update_svar_val (fresh_svar patt_ind_gen_body) A ρ) step) A = eval ρ base βˆͺ app_ext (eval ρ step) A
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
A: propset M

svar_is_fresh_in (fresh_svar patt_ind_gen_body) step
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
A: propset M
eval ρ base βˆͺ app_ext (eval ρ step) A = eval ρ base βˆͺ app_ext (eval ρ step) A
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
A: propset M

svar_is_fresh_in (fresh_svar patt_ind_gen_body) step
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
A: propset M

free_svars step βŠ† free_svars ?Ο•β‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
A: propset M
svar_is_fresh_in (fresh_svar patt_ind_gen_body) ?Ο•β‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
A: propset M

svar_is_fresh_in (fresh_svar patt_ind_gen_body) ?Ο•β‚‚
apply set_svar_fresh_is_fresh.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
A: propset M

free_svars step βŠ† free_svars patt_ind_gen_body
solve_free_svars_inclusion 5.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
A: propset M

eval ρ base βˆͺ app_ext (eval ρ step) A = eval ρ base βˆͺ app_ext (eval ρ step) A
reflexivity. Qed. Definition is_witnessing_sequence_old (m : Domain M) (l : list (Domain M)) := (last l = Some m) /\ (match l with | [] => False | mβ‚€::ms => (mβ‚€ ∈ @eval Ξ£ M ρ base) /\ (@Forall _ (Ξ» (x : (Domain M) * (Domain M)), let (old, new) := x in new ∈ app_ext (@eval Ξ£ M ρ step) {[ old ]} ) (zip (mβ‚€::ms) ms) ) end). Definition is_witnessing_sequence (m : Domain M) (l : list (Domain M)) := (βˆƒ lst, last l = Some lst /\ lst ∈ @eval Ξ£ M ρ base) /\ hd_error l = Some m /\ ((@Forall _ (uncurry (Ξ» new old, new ∈ app_ext (@eval Ξ£ M ρ step) {[old]} )) (zip l (tail l)) )). (* If we have a witnessing sequence x₁ xβ‚‚ ... xβ‚™ xβ‚™β‚Šβ‚ ... xlast and xβ‚™ matches `base`, then xβ‚™ xβ‚™β‚Šβ‚ is a witnessing sequence, too. *)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
n: nat
m': M

is_witnessing_sequence m l β†’ l !! n = Some m' β†’ m' ∈ eval ρ base β†’ is_witnessing_sequence m' (drop n l)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
n: nat
m': M

is_witnessing_sequence m l β†’ l !! n = Some m' β†’ m' ∈ eval ρ base β†’ is_witnessing_sequence m' (drop n l)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
n: nat
m', lst: M
Hlst: last l = Some lst
Hbase: lst ∈ eval ρ base
Hhd: head l = Some m
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
Hm': l !! n = Some m'
Hbase': m' ∈ eval ρ base

is_witnessing_sequence m' (drop n l)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
n: nat
m', lst: M
Hlst: last l = Some lst
Hbase: lst ∈ eval ρ base
Hhd: head l = Some m
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
Hm': l !! n = Some m'
Hbase': m' ∈ eval ρ base

βˆƒ lst : M, last (drop n l) = Some lst ∧ lst ∈ eval ρ base
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
n: nat
m', lst: M
Hlst: last l = Some lst
Hbase: lst ∈ eval ρ base
Hhd: head l = Some m
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
Hm': l !! n = Some m'
Hbase': m' ∈ eval ρ base
head (drop n l) = Some m' ∧ Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (drop n l) (tail (drop n l)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
n: nat
m', lst: M
Hlst: last l = Some lst
Hbase: lst ∈ eval ρ base
Hhd: head l = Some m
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
Hm': l !! n = Some m'
Hbase': m' ∈ eval ρ base

βˆƒ lst : M, last (drop n l) = Some lst ∧ lst ∈ eval ρ base
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
n: nat
m', lst: M
Hlst: last l = Some lst
Hbase: lst ∈ eval ρ base
Hhd: head l = Some m
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
Hm': l !! n = Some m'
Hbase': m' ∈ eval ρ base

last (drop n l) = Some lst ∧ lst ∈ eval ρ base
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
n: nat
m', lst: M
Hlst: last l = Some lst
Hbase: lst ∈ eval ρ base
Hhd: head l = Some m
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
Hm': l !! n = Some m'
Hbase': m' ∈ eval ρ base

last (drop n l) = Some lst
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
n: nat
m', lst: M
Hlst: last l = Some lst
Hbase: lst ∈ eval ρ base
Hhd: head l = Some m
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
Hm': l !! n = Some m'
Hbase': m' ∈ eval ρ base
lst ∈ eval ρ base
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
n: nat
m', lst: M
Hlst: last l = Some lst
Hbase: lst ∈ eval ρ base
Hhd: head l = Some m
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
Hm': l !! n = Some m'
Hbase': m' ∈ eval ρ base

Some lst = Some lst
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
n: nat
m', lst: M
Hlst: last l = Some lst
Hbase: lst ∈ eval ρ base
Hhd: head l = Some m
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
Hm': l !! n = Some m'
Hbase': m' ∈ eval ρ base
last l = Some lst
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
n: nat
m', lst: M
Hlst: last l = Some lst
Hbase: lst ∈ eval ρ base
Hhd: head l = Some m
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
Hm': l !! n = Some m'
Hbase': m' ∈ eval ρ base
n < length l
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
n: nat
m', lst: M
Hlst: last l = Some lst
Hbase: lst ∈ eval ρ base
Hhd: head l = Some m
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
Hm': l !! n = Some m'
Hbase': m' ∈ eval ρ base
lst ∈ eval ρ base
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
n: nat
m', lst: M
Hlst: last l = Some lst
Hbase: lst ∈ eval ρ base
Hhd: head l = Some m
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
Hm': l !! n = Some m'
Hbase': m' ∈ eval ρ base

Some lst = Some lst
reflexivity.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
n: nat
m', lst: M
Hlst: last l = Some lst
Hbase: lst ∈ eval ρ base
Hhd: head l = Some m
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
Hm': l !! n = Some m'
Hbase': m' ∈ eval ρ base

last l = Some lst
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
n: nat
m', lst: M
Hlst: last l = Some lst
Hbase: lst ∈ eval ρ base
Hhd: head l = Some m
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
Hm': l !! n = Some m'
Hbase': m' ∈ eval ρ base
n < length l
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
n: nat
m', lst: M
Hlst: last l = Some lst
Hbase: lst ∈ eval ρ base
Hhd: head l = Some m
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
Hm': l !! n = Some m'
Hbase': m' ∈ eval ρ base
lst ∈ eval ρ base
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
n: nat
m', lst: M
Hlst: last l = Some lst
Hbase: lst ∈ eval ρ base
Hhd: head l = Some m
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
Hm': l !! n = Some m'
Hbase': m' ∈ eval ρ base

last l = Some lst
apply Hlst.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
n: nat
m', lst: M
Hlst: last l = Some lst
Hbase: lst ∈ eval ρ base
Hhd: head l = Some m
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
Hm': l !! n = Some m'
Hbase': m' ∈ eval ρ base

n < length l
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
n: nat
m', lst: M
Hlst: last l = Some lst
Hbase: lst ∈ eval ρ base
Hhd: head l = Some m
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
Hm': l !! n = Some m'
Hbase': m' ∈ eval ρ base
lst ∈ eval ρ base
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
n: nat
m', lst: M
Hlst: last l = Some lst
Hbase: lst ∈ eval ρ base
Hhd: head l = Some m
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
Hm': l !! n = Some m'
Hbase': m' ∈ eval ρ base

n < length l
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
n: nat
m', lst: M
Hlst: last l = Some lst
Hbase: lst ∈ eval ρ base
Hhd: head l = Some m
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
Hm': l !! n = Some m'
Hbase': m' ∈ eval ρ base

is_Some (l !! n)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
n: nat
m', lst: M
Hlst: last l = Some lst
Hbase: lst ∈ eval ρ base
Hhd: head l = Some m
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
Hm': l !! n = Some m'
Hbase': m' ∈ eval ρ base

is_Some (Some m')
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
n: nat
m', lst: M
Hlst: last l = Some lst
Hbase: lst ∈ eval ρ base
Hhd: head l = Some m
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
Hm': l !! n = Some m'
Hbase': m' ∈ eval ρ base

Some m' = Some m'
reflexivity.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
n: nat
m', lst: M
Hlst: last l = Some lst
Hbase: lst ∈ eval ρ base
Hhd: head l = Some m
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
Hm': l !! n = Some m'
Hbase': m' ∈ eval ρ base

lst ∈ eval ρ base
apply Hbase.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
n: nat
m', lst: M
Hlst: last l = Some lst
Hbase: lst ∈ eval ρ base
Hhd: head l = Some m
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
Hm': l !! n = Some m'
Hbase': m' ∈ eval ρ base

head (drop n l) = Some m' ∧ Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (drop n l) (tail (drop n l)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
n: nat
m', lst: M
Hlst: last l = Some lst
Hbase: lst ∈ eval ρ base
Hhd: head l = Some m
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
Hm': l !! n = Some m'
Hbase': m' ∈ eval ρ base

head (drop n l) = Some m'
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
n: nat
m', lst: M
Hlst: last l = Some lst
Hbase: lst ∈ eval ρ base
Hhd: head l = Some m
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
Hm': l !! n = Some m'
Hbase': m' ∈ eval ρ base
Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (drop n l) (tail (drop n l)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
n: nat
m', lst: M
Hlst: last l = Some lst
Hbase: lst ∈ eval ρ base
Hhd: head l = Some m
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
Hm': l !! n = Some m'
Hbase': m' ∈ eval ρ base

head (drop n l) = Some m'
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
n: nat
m', lst: M
Hlst: last l = Some lst
Hbase: lst ∈ eval ρ base
Hhd: head l = Some m
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
Hm': l !! n = Some m'
Hbase': m' ∈ eval ρ base

l !! n = Some m'
apply Hm'.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
n: nat
m', lst: M
Hlst: last l = Some lst
Hbase: lst ∈ eval ρ base
Hhd: head l = Some m
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
Hm': l !! n = Some m'
Hbase': m' ∈ eval ρ base

Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (drop n l) (tail (drop n l)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
n: nat
m', lst: M
Hlst: last l = Some lst
Hbase: lst ∈ eval ρ base
Hhd: head l = Some m
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
Hm': l !! n = Some m'
Hbase': m' ∈ eval ρ base

Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (drop n l) (tail (drop n l)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
n: nat
m', lst: M
Hlst: last l = Some lst
Hbase: lst ∈ eval ρ base
Hhd: head l = Some m
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
Hm': l !! n = Some m'
Hbase': m' ∈ eval ρ base

Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (drop n l) (drop n (tail l)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
n: nat
m', lst: M
Hlst: last l = Some lst
Hbase: lst ∈ eval ρ base
Hhd: head l = Some m
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
Hm': l !! n = Some m'
Hbase': m' ∈ eval ρ base

Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (drop n (zip l (tail l)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
n: nat
m', lst: M
Hlst: last l = Some lst
Hbase: lst ∈ eval ρ base
Hhd: head l = Some m
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
Hm': l !! n = Some m'
Hbase': m' ∈ eval ρ base

Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
apply Hfa. } Qed.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
m': M

is_witnessing_sequence m l β†’ head (tail l) = Some m' β†’ is_witnessing_sequence m' (tail l)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
m': M

is_witnessing_sequence m l β†’ head (tail l) = Some m' β†’ is_witnessing_sequence m' (tail l)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
m': M
Hw: is_witnessing_sequence m l
Hhead: head (tail l) = Some m'

is_witnessing_sequence m' (tail l)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
m': M
Hw: (βˆƒ lst : M, last l = Some lst ∧ lst ∈ eval ρ base) ∧ head l = Some m ∧ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
Hhead: head (tail l) = Some m'

is_witnessing_sequence m' (tail l)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
m', lst: M
Hlst1: last l = Some lst
Hlst2: lst ∈ eval ρ base
Hw: head l = Some m ∧ Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
Hhead: head (tail l) = Some m'

is_witnessing_sequence m' (tail l)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
m', lst: M
Hlst1: last l = Some lst
Hlst2: lst ∈ eval ρ base
Hw: head l = Some m ∧ Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
Hhead: head (tail l) = Some m'

(βˆƒ lst : M, last (tail l) = Some lst ∧ lst ∈ eval ρ base) ∧ head (tail l) = Some m' ∧ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (tail l) (tail (tail l)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
m', lst: M
Hlst1: last l = Some lst
Hlst2: lst ∈ eval ρ base
Hw: head l = Some m ∧ Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
Hhead: head (tail l) = Some m'

βˆƒ lst : M, last (tail l) = Some lst ∧ lst ∈ eval ρ base
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
m', lst: M
Hlst1: last l = Some lst
Hlst2: lst ∈ eval ρ base
Hw: head l = Some m ∧ Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
Hhead: head (tail l) = Some m'
head (tail l) = Some m' ∧ Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (tail l) (tail (tail l)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
m', lst: M
Hlst1: last l = Some lst
Hlst2: lst ∈ eval ρ base
Hw: head l = Some m ∧ Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
Hhead: head (tail l) = Some m'

βˆƒ lst : M, last (tail l) = Some lst ∧ lst ∈ eval ρ base
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
m', lst: M
Hlst1: last l = Some lst
Hlst2: lst ∈ eval ρ base
Hw: head l = Some m ∧ Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
Hhead: head (tail l) = Some m'

last (tail l) = Some lst ∧ lst ∈ eval ρ base
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
m', lst: M
Hlst1: last l = Some lst
Hlst2: lst ∈ eval ρ base
Hw: head l = Some m ∧ Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
Hhead: head (tail l) = Some m'

last (tail l) = Some lst
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
m', lst: M
Hlst1: last l = Some lst
Hlst2: lst ∈ eval ρ base
Hw: head l = Some m ∧ Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
Hhead: head (tail l) = Some m'
lst ∈ eval ρ base
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
m', lst: M
Hlst1: last l = Some lst
Hlst2: lst ∈ eval ρ base
Hw: head l = Some m ∧ Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
Hhead: head (tail l) = Some m'

last (tail l) = Some lst
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
m', lst: M
Hlst1: last l = Some lst
Hlst2: lst ∈ eval ρ base
Hw: head l = Some m ∧ Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
Hhead: head (tail l) = Some m'

last l = Some lst
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
m', lst: M
Hlst1: last l = Some lst
Hlst2: lst ∈ eval ρ base
Hw: head l = Some m ∧ Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
Hhead: head (tail l) = Some m'
head (tail l) = Some ?m
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
m', lst: M
Hlst1: last l = Some lst
Hlst2: lst ∈ eval ρ base
Hw: head l = Some m ∧ Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
Hhead: head (tail l) = Some m'

last l = Some lst
apply Hlst1.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
m', lst: M
Hlst1: last l = Some lst
Hlst2: lst ∈ eval ρ base
Hw: head l = Some m ∧ Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
Hhead: head (tail l) = Some m'

head (tail l) = Some m' ∧ Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (tail l) (tail (tail l)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
m', lst: M
Hlst1: last l = Some lst
Hlst2: lst ∈ eval ρ base
Hw: head l = Some m ∧ Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
Hhead: head (tail l) = Some m'

head (tail l) = Some m'
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
m', lst: M
Hlst1: last l = Some lst
Hlst2: lst ∈ eval ρ base
Hw: head l = Some m ∧ Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
Hhead: head (tail l) = Some m'
Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (tail l) (tail (tail l)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
m', lst: M
Hlst1: last l = Some lst
Hlst2: lst ∈ eval ρ base
Hw: head l = Some m ∧ Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
Hhead: head (tail l) = Some m'

head (tail l) = Some m'
apply Hhead.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
m', lst: M
Hlst1: last l = Some lst
Hlst2: lst ∈ eval ρ base
Hw: head l = Some m ∧ Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
Hhead: head (tail l) = Some m'

Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (tail l) (tail (tail l)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
m', lst: M
Hlst1: last l = Some lst
Hlst2: lst ∈ eval ρ base
Hw: head l = Some m ∧ Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
Hhead: head (tail l) = Some m'

Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (tail (zip l (tail l)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
m', lst: M
Hlst1: last l = Some lst
Hlst2: lst ∈ eval ρ base
Hw: head l = Some m ∧ Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
Hhead: head (tail l) = Some m'

Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
m', lst: M
Hlst1: last l = Some lst
Hlst2: lst ∈ eval ρ base
Hw1: head l = Some m
Hw2: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
Hhead: head (tail l) = Some m'

Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
apply Hw2. Qed.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M

is_witnessing_sequence m l ↔ is_witnessing_sequence_old m (reverse l)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M

is_witnessing_sequence m l ↔ is_witnessing_sequence_old m (reverse l)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M

uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
is_witnessing_sequence m l ↔ is_witnessing_sequence_old m (reverse l)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M

uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M

βˆ€ x : M * M, uncurry (flip (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) x = (let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
x₁, xβ‚‚: M

uncurry (flip (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (x₁, xβ‚‚) = (xβ‚‚ ∈ app_ext (eval ρ step) {[x₁]})
reflexivity.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})

is_witnessing_sequence m l ↔ is_witnessing_sequence_old m (reverse l)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})

is_witnessing_sequence m l β†’ is_witnessing_sequence_old m (reverse l)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
is_witnessing_sequence_old m (reverse l) β†’ is_witnessing_sequence m l
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})

is_witnessing_sequence m l β†’ is_witnessing_sequence_old m (reverse l)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
m': M
Hlast: last l = Some m'
Hbase: m' ∈ eval ρ base
Hhd: head l = Some m
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))

is_witnessing_sequence_old m (reverse l)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
m': M
Hlast: last [] = Some m'
Hbase: m' ∈ eval ρ base
Hhd: head [] = Some m
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [] (tail []))

is_witnessing_sequence_old m (reverse [])
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
m': M
Hlast: last (x :: l) = Some m'
Hbase: m' ∈ eval ρ base
Hhd: head (x :: l) = Some m
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (x :: l) (tail (x :: l)))
is_witnessing_sequence_old m (reverse (x :: l))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
m': M
Hlast: last [] = Some m'
Hbase: m' ∈ eval ρ base
Hhd: head [] = Some m
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [] (tail []))

is_witnessing_sequence_old m (reverse [])
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
m': M
Hlast: last [] = Some m'
Hbase: m' ∈ eval ρ base
Hhd: None = Some m
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [] (tail []))

is_witnessing_sequence_old m (reverse [])
inversion Hhd.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
m': M
Hlast: last (x :: l) = Some m'
Hbase: m' ∈ eval ρ base
Hhd: head (x :: l) = Some m
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (x :: l) (tail (x :: l)))

is_witnessing_sequence_old m (reverse (x :: l))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
m': M
Hlast: last (x :: l) = Some m'
Hbase: m' ∈ eval ρ base
Hhd: Some x = Some m
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (x :: l) (tail (x :: l)))

is_witnessing_sequence_old m (reverse (x :: l))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
m': M
Hlast: last (x :: l) = Some m'
Hbase: m' ∈ eval ρ base
Hhd: Some x = Some m
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (x :: l) (tail (x :: l)))
H0: x = m

is_witnessing_sequence_old m (reverse (m :: l))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
m': M
Hlast: last (m :: l) = Some m'
Hbase: m' ∈ eval ρ base
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l) (tail (m :: l)))
Hhd: Some m = Some m

is_witnessing_sequence_old m (reverse (m :: l))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
m': M
Hlast: last (m :: l) = Some m'
Hbase: m' ∈ eval ρ base
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l) (tail (m :: l)))

is_witnessing_sequence_old m (reverse (m :: l))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
m': M
Hlast: last (m :: l) = Some m'
Hbase: m' ∈ eval ρ base
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l) (tail (m :: l)))

last (reverse (m :: l)) = Some m
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
m': M
Hlast: last (m :: l) = Some m'
Hbase: m' ∈ eval ρ base
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l) (tail (m :: l)))
match reverse (m :: l) with | [] => False | mβ‚€ :: ms => mβ‚€ ∈ eval ρ base ∧ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (mβ‚€ :: ms) ms) end
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
m': M
Hlast: last (m :: l) = Some m'
Hbase: m' ∈ eval ρ base
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l) (tail (m :: l)))

last (reverse (m :: l)) = Some m
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
m': M
Hlast: last (m :: l) = Some m'
Hbase: m' ∈ eval ρ base
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l) (tail (m :: l)))

last (reverse l ++ [m]) = Some m
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
m': M
Hlast: last (m :: l) = Some m'
Hbase: m' ∈ eval ρ base
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l) (tail (m :: l)))

Some m = Some m
reflexivity.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
m': M
Hlast: last (m :: l) = Some m'
Hbase: m' ∈ eval ρ base
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l) (tail (m :: l)))

match reverse (m :: l) with | [] => False | mβ‚€ :: ms => mβ‚€ ∈ eval ρ base ∧ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (mβ‚€ :: ms) ms) end
(* reverse (m::l) <> nil *)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
m': M
Hlast: last (m :: l) = Some m'
Hbase: m' ∈ eval ρ base
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l) (tail (m :: l)))
Heq: reverse (m :: l) = []

False
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
m': M
Hlast: last (m :: l) = Some m'
Hbase: m' ∈ eval ρ base
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l) (tail (m :: l)))
d: M
l0: list M
Heq: reverse (m :: l) = d :: l0
d ∈ eval ρ base ∧ Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (d :: l0) l0)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
m': M
Hlast: last (m :: l) = Some m'
Hbase: m' ∈ eval ρ base
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l) (tail (m :: l)))
Heq: reverse (m :: l) = []

False
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
m': M
Hlast: last (m :: l) = Some m'
Hbase: m' ∈ eval ρ base
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l) (tail (m :: l)))
Heq: reverse (m :: l) = []

length (reverse (m :: l)) = length []
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
m': M
Hlast: last (m :: l) = Some m'
Hbase: m' ∈ eval ρ base
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l) (tail (m :: l)))
Heq: reverse (m :: l) = []
H: length (reverse (m :: l)) = length []
False
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
m': M
Hlast: last (m :: l) = Some m'
Hbase: m' ∈ eval ρ base
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l) (tail (m :: l)))
Heq: reverse (m :: l) = []

length (reverse (m :: l)) = length []
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
m': M
Hlast: last (m :: l) = Some m'
Hbase: m' ∈ eval ρ base
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l) (tail (m :: l)))
Heq: reverse (m :: l) = []

length [] = length []
reflexivity.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
m': M
Hlast: last (m :: l) = Some m'
Hbase: m' ∈ eval ρ base
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l) (tail (m :: l)))
Heq: reverse (m :: l) = []
H: length (reverse (m :: l)) = length []

False
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
m': M
Hlast: last (m :: l) = Some m'
Hbase: m' ∈ eval ρ base
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l) (tail (m :: l)))
Heq: reverse (m :: l) = []
H: length (m :: l) = length []

False
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
m': M
Hlast: last (m :: l) = Some m'
Hbase: m' ∈ eval ρ base
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l) (tail (m :: l)))
Heq: reverse (m :: l) = []
H: S (length l) = 0

False
inversion H.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
m': M
Hlast: last (m :: l) = Some m'
Hbase: m' ∈ eval ρ base
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l) (tail (m :: l)))
d: M
l0: list M
Heq: reverse (m :: l) = d :: l0

d ∈ eval ρ base ∧ Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (d :: l0) l0)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
m': M
Hlast: last (m :: l) = Some m'
Hbase: m' ∈ eval ρ base
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l) (tail (m :: l)))
d: M
l0: list M
Heq: reverse (m :: l) = d :: l0

m' = d
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
m': M
Hlast: last (m :: l) = Some m'
Hbase: m' ∈ eval ρ base
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l) (tail (m :: l)))
d: M
l0: list M
Heq: reverse (m :: l) = d :: l0
Hm'd: m' = d
d ∈ eval ρ base ∧ Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (d :: l0) l0)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
m': M
Hlast: last (m :: l) = Some m'
Hbase: m' ∈ eval ρ base
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l) (tail (m :: l)))
d: M
l0: list M
Heq: reverse (m :: l) = d :: l0

m' = d
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
m': M
Hlast: last (m :: l) = Some m'
Hbase: m' ∈ eval ρ base
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l) (tail (m :: l)))
d: M
l0: list M
Heq: reverse l ++ [m] = d :: l0

m' = d
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
m': M
Hlast: last (m :: l) = Some m'
Hbase: m' ∈ eval ρ base
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l) (tail (m :: l)))
d: M
l0: list M
Heq: reverse l ++ [m] = d :: l0
H: last (m :: l) = head (reverse l ++ [m])

m' = d
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
m': M
Hlast: last (m :: l) = Some m'
Hbase: m' ∈ eval ρ base
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l) (tail (m :: l)))
d: M
l0: list M
Heq: reverse l ++ [m] = d :: l0
H: Some m' = head (reverse l ++ [m])

m' = d
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
m': M
Hlast: last (m :: l) = Some m'
Hbase: m' ∈ eval ρ base
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l) (tail (m :: l)))
d: M
l0: list M
Heq: rev_append l [] ++ [m] = d :: l0
H: Some m' = head (reverse l ++ [m])

m' = d
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
m': M
Hlast: last (m :: l) = Some m'
Hbase: m' ∈ eval ρ base
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l) (tail (m :: l)))
d: M
l0: list M
Heq: rev_append l [] ++ [m] = d :: l0
H: Some m' = head (d :: l0)

m' = d
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
m': M
Hlast: last (m :: l) = Some m'
Hbase: m' ∈ eval ρ base
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l) (tail (m :: l)))
d: M
l0: list M
Heq: rev_append l [] ++ [m] = d :: l0
H: Some m' = Some d

m' = d
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
m': M
Hlast: last (m :: l) = Some m'
Hbase: m' ∈ eval ρ base
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l) (tail (m :: l)))
d: M
l0: list M
Heq: rev_append l [] ++ [m] = d :: l0
H: Some m' = Some d
H1: m' = d

d = d
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
d: M
Hbase: d ∈ eval ρ base
Hlast: last (m :: l) = Some d
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l) (tail (m :: l)))
l0: list M
Heq: rev_append l [] ++ [m] = d :: l0
H: Some d = Some d

d = d
reflexivity.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
m': M
Hlast: last (m :: l) = Some m'
Hbase: m' ∈ eval ρ base
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l) (tail (m :: l)))
d: M
l0: list M
Heq: reverse (m :: l) = d :: l0
Hm'd: m' = d

d ∈ eval ρ base ∧ Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (d :: l0) l0)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
d: M
Hbase: d ∈ eval ρ base
Hlast: last (m :: l) = Some d
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l) (tail (m :: l)))
l0: list M
Heq: reverse (m :: l) = d :: l0

d ∈ eval ρ base ∧ Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (d :: l0) l0)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
d: M
Hbase: d ∈ eval ρ base
Hlast: last (m :: l) = Some d
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l) (tail (m :: l)))
l0: list M
Heq: reverse (m :: l) = d :: l0

d ∈ eval ρ base
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
d: M
Hbase: d ∈ eval ρ base
Hlast: last (m :: l) = Some d
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l) (tail (m :: l)))
l0: list M
Heq: reverse (m :: l) = d :: l0
Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (d :: l0) l0)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
d: M
Hbase: d ∈ eval ρ base
Hlast: last (m :: l) = Some d
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l) (tail (m :: l)))
l0: list M
Heq: reverse (m :: l) = d :: l0

d ∈ eval ρ base
apply Hbase.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
d: M
Hbase: d ∈ eval ρ base
Hlast: last (m :: l) = Some d
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l) (tail (m :: l)))
l0: list M
Heq: reverse (m :: l) = d :: l0

Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (d :: l0) l0)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
d: M
Hlast: last (m :: l) = Some d
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l) (tail (m :: l)))
l0: list M
Heq: reverse (m :: l) = d :: l0

Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (d :: l0) l0)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
d: M
Hlast: last (m :: l) = Some d
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l) (tail (m :: l)))
l0: list M
Heq: reverse (m :: l) = d :: l0
Heq': reverse (reverse (m :: l)) = reverse (d :: l0)

Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (d :: l0) l0)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
d: M
Hlast: last (m :: l) = Some d
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l) (tail (m :: l)))
l0: list M
Heq: reverse (m :: l) = d :: l0
Heq': m :: l = reverse (d :: l0)

Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (d :: l0) l0)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
d: M
Hlast: last (m :: l) = Some d
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l) (tail (m :: l)))
l0: list M
Heq: reverse (m :: l) = d :: l0
Heq': m :: l = reverse (d :: l0)

l0 = tail (d :: l0)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
d: M
Hlast: last (m :: l) = Some d
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l) (tail (m :: l)))
l0: list M
Heq: reverse (m :: l) = d :: l0
Heq': m :: l = reverse (d :: l0)
Heq'': l0 = tail (d :: l0)
Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (d :: l0) l0)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
d: M
Hlast: last (m :: l) = Some d
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l) (tail (m :: l)))
l0: list M
Heq: reverse (m :: l) = d :: l0
Heq': m :: l = reverse (d :: l0)

l0 = tail (d :: l0)
reflexivity.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
d: M
Hlast: last (m :: l) = Some d
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l) (tail (m :: l)))
l0: list M
Heq: reverse (m :: l) = d :: l0
Heq': m :: l = reverse (d :: l0)
Heq'': l0 = tail (d :: l0)

Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (d :: l0) l0)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
d: M
Hlast: last (m :: l) = Some d
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l) (tail (m :: l)))
l0: list M
Heq: reverse (m :: l) = d :: l0
Heq': m :: l = reverse (d :: l0)
Heq'': l0 = tail (d :: l0)

Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (d :: l0) (tail (d :: l0)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
d: M
Hlast: last (m :: l) = Some d
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l) (tail (m :: l)))
l0: list M
Heq: reverse (m :: l) = d :: l0
Heq': m :: l = reverse (d :: l0)

Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (d :: l0) (tail (d :: l0)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
d: M
Hlast: last (m :: l) = Some d
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l) (tail (m :: l)))
l0: list M
Heq: reverse (m :: l) = d :: l0
Heq': m :: l = reverse (d :: l0)

Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (reverse (m :: l)) (tail (reverse (m :: l))))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
d: M
Hlast: last (m :: l) = Some d
Hfa: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l) (tail (m :: l)))

Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (reverse (m :: l)) (tail (reverse (m :: l))))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
d: M
Hlast: last (m :: l) = Some d
Hfa: Forall (uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}))) (zip (reverse (m :: l)) (tail (reverse (m :: l))))

Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (reverse (m :: l)) (tail (reverse (m :: l))))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
d: M
Hfa: Forall (uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}))) (zip (reverse (m :: l)) (tail (reverse (m :: l))))

Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (reverse (m :: l)) (tail (reverse (m :: l))))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
d: M
Hfa: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (reverse (m :: l)) (tail (reverse (m :: l))))

Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (reverse (m :: l)) (tail (reverse (m :: l))))
apply Hfa.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})

is_witnessing_sequence_old m (reverse l) β†’ is_witnessing_sequence m l
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
H: is_witnessing_sequence_old m (reverse l)

is_witnessing_sequence m l
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
Hlast: last (reverse l) = Some m
H2: match reverse l with | [] => False | mβ‚€ :: ms => mβ‚€ ∈ eval ρ base ∧ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (mβ‚€ :: ms) ms) end

is_witnessing_sequence m l
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
Hlast: last (reverse []) = Some m
H2: match reverse [] with | [] => False | mβ‚€ :: ms => mβ‚€ ∈ eval ρ base ∧ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (mβ‚€ :: ms) ms) end

is_witnessing_sequence m []
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
Hlast: last (reverse (x :: l)) = Some m
H2: match reverse (x :: l) with | [] => False | mβ‚€ :: ms => mβ‚€ ∈ eval ρ base ∧ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (mβ‚€ :: ms) ms) end
is_witnessing_sequence m (x :: l)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
Hlast: last (reverse []) = Some m
H2: match reverse [] with | [] => False | mβ‚€ :: ms => mβ‚€ ∈ eval ρ base ∧ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (mβ‚€ :: ms) ms) end

is_witnessing_sequence m []
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
Hlast: None = Some m
H2: match reverse [] with | [] => False | mβ‚€ :: ms => mβ‚€ ∈ eval ρ base ∧ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (mβ‚€ :: ms) ms) end

is_witnessing_sequence m []
inversion Hlast.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
Hlast: last (reverse (x :: l)) = Some m
H2: match reverse (x :: l) with | [] => False | mβ‚€ :: ms => mβ‚€ ∈ eval ρ base ∧ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (mβ‚€ :: ms) ms) end

is_witnessing_sequence m (x :: l)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
Heq: reverse (x :: l) = []
Hlast: last [] = Some m
H2: False

is_witnessing_sequence m (x :: l)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
y: M
ys: list M
Heq: reverse (x :: l) = y :: ys
Hlast: last (y :: ys) = Some m
H2: y ∈ eval ρ base ∧ Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (y :: ys) ys)
is_witnessing_sequence m (x :: l)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
Heq: reverse (x :: l) = []
Hlast: last [] = Some m
H2: False

is_witnessing_sequence m (x :: l)
inversion H2.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
y: M
ys: list M
Heq: reverse (x :: l) = y :: ys
Hlast: last (y :: ys) = Some m
H2: y ∈ eval ρ base ∧ Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (y :: ys) ys)

is_witnessing_sequence m (x :: l)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
y: M
ys: list M
Heq: reverse (x :: l) = y :: ys
Hlast: last (y :: ys) = Some m
Hbase: y ∈ eval ρ base
Hfa: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (y :: ys) ys)

is_witnessing_sequence m (x :: l)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
y: M
ys: list M
Hlast: last (y :: ys) = Some m
Hbase: y ∈ eval ρ base
Hfa: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (y :: ys) ys)
Heq: reverse (x :: l) = reverse (reverse (y :: ys))

is_witnessing_sequence m (x :: l)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
y: M
ys: list M
Hlast: last (y :: ys) = Some m
Hbase: y ∈ eval ρ base
Hfa: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (y :: ys) ys)
Heq: x :: l = reverse (y :: ys)

is_witnessing_sequence m (x :: l)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
y: M
ys: list M
Hlast: last (y :: ys) = Some m
Hbase: y ∈ eval ρ base
Hfa: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (y :: ys) ys)
Heq: reverse (x :: l) = reverse (reverse (y :: ys))
Inj eq eq reverse
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
y: M
ys: list M
Hlast: last (y :: ys) = Some m
Hbase: y ∈ eval ρ base
Hfa: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (y :: ys) ys)
Heq: x :: l = reverse (y :: ys)

is_witnessing_sequence m (x :: l)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
y: M
ys: list M
Hlast: last (y :: ys) = Some m
Hbase: y ∈ eval ρ base
Hfa: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (y :: ys) ys)
Heq: x :: l = reverse (y :: ys)

βˆƒ lst : M, last (x :: l) = Some lst ∧ lst ∈ eval ρ base
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
y: M
ys: list M
Hlast: last (y :: ys) = Some m
Hbase: y ∈ eval ρ base
Hfa: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (y :: ys) ys)
Heq: x :: l = reverse (y :: ys)
head (x :: l) = Some m ∧ Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (x :: l) (tail (x :: l)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
y: M
ys: list M
Hlast: last (y :: ys) = Some m
Hbase: y ∈ eval ρ base
Hfa: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (y :: ys) ys)
Heq: x :: l = reverse (y :: ys)

βˆƒ lst : M, last (x :: l) = Some lst ∧ lst ∈ eval ρ base
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
y: M
ys: list M
Hlast: last (y :: ys) = Some m
Hbase: y ∈ eval ρ base
Hfa: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (y :: ys) ys)
Heq: x :: l = reverse (y :: ys)

last (x :: l) = Some y ∧ y ∈ eval ρ base
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
y: M
ys: list M
Hlast: last (y :: ys) = Some m
Hbase: y ∈ eval ρ base
Hfa: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (y :: ys) ys)
Heq: x :: l = reverse (y :: ys)

last (x :: l) = Some y
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
y: M
ys: list M
Hlast: last (y :: ys) = Some m
Hbase: y ∈ eval ρ base
Hfa: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (y :: ys) ys)
Heq: x :: l = reverse (y :: ys)
y ∈ eval ρ base
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
y: M
ys: list M
Hlast: last (y :: ys) = Some m
Hbase: y ∈ eval ρ base
Hfa: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (y :: ys) ys)
Heq: x :: l = reverse (y :: ys)

last (reverse (y :: ys)) = Some y
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
y: M
ys: list M
Hlast: last (y :: ys) = Some m
Hbase: y ∈ eval ρ base
Hfa: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (y :: ys) ys)
Heq: x :: l = reverse (y :: ys)
y ∈ eval ρ base
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
y: M
ys: list M
Hlast: last (y :: ys) = Some m
Hbase: y ∈ eval ρ base
Hfa: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (y :: ys) ys)
Heq: x :: l = reverse (y :: ys)

head (y :: ys) = Some y
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
y: M
ys: list M
Hlast: last (y :: ys) = Some m
Hbase: y ∈ eval ρ base
Hfa: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (y :: ys) ys)
Heq: x :: l = reverse (y :: ys)
y ∈ eval ρ base
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
y: M
ys: list M
Hlast: last (y :: ys) = Some m
Hbase: y ∈ eval ρ base
Hfa: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (y :: ys) ys)
Heq: x :: l = reverse (y :: ys)

y ∈ eval ρ base
apply Hbase.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
y: M
ys: list M
Hlast: last (y :: ys) = Some m
Hbase: y ∈ eval ρ base
Hfa: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (y :: ys) ys)
Heq: x :: l = reverse (y :: ys)

head (x :: l) = Some m ∧ Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (x :: l) (tail (x :: l)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
y: M
ys: list M
Hlast: last (y :: ys) = Some m
Hbase: y ∈ eval ρ base
Hfa: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (y :: ys) ys)
Heq: x :: l = reverse (y :: ys)

head (x :: l) = Some m
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
y: M
ys: list M
Hlast: last (y :: ys) = Some m
Hbase: y ∈ eval ρ base
Hfa: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (y :: ys) ys)
Heq: x :: l = reverse (y :: ys)
Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (x :: l) (tail (x :: l)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
y: M
ys: list M
Hlast: last (y :: ys) = Some m
Hbase: y ∈ eval ρ base
Hfa: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (y :: ys) ys)
Heq: x :: l = reverse (y :: ys)

head (x :: l) = Some m
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
y: M
ys: list M
Hlast: last (y :: ys) = Some m
Hbase: y ∈ eval ρ base
Hfa: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (y :: ys) ys)
Heq: x :: l = reverse (y :: ys)

head (reverse (y :: ys)) = Some m
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
y: M
ys: list M
Hlast: last (y :: ys) = Some m
Hbase: y ∈ eval ρ base
Hfa: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (y :: ys) ys)
Heq: x :: l = reverse (y :: ys)

last (y :: ys) = Some m
apply Hlast.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
y: M
ys: list M
Hlast: last (y :: ys) = Some m
Hbase: y ∈ eval ρ base
Hfa: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (y :: ys) ys)
Heq: x :: l = reverse (y :: ys)

Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (x :: l) (tail (x :: l)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
y: M
ys: list M
Hlast: last (y :: ys) = Some m
Hbase: y ∈ eval ρ base
Hfa: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (y :: ys) ys)
Heq: x :: l = reverse (y :: ys)

(λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) = flip (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
y: M
ys: list M
Hlast: last (y :: ys) = Some m
Hbase: y ∈ eval ρ base
Hfa: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (y :: ys) ys)
Heq: x :: l = reverse (y :: ys)
Hfeq': (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) = flip (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}))
Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (x :: l) (tail (x :: l)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
y: M
ys: list M
Hlast: last (y :: ys) = Some m
Hbase: y ∈ eval ρ base
Hfa: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (y :: ys) ys)
Heq: x :: l = reverse (y :: ys)

(λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) = flip (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
y: M
ys: list M
Hlast: last (y :: ys) = Some m
Hbase: y ∈ eval ρ base
Hfa: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (y :: ys) ys)
Heq: x :: l = reverse (y :: ys)

βˆ€ x : M, (Ξ» old : M, x ∈ app_ext (eval ρ step) {[old]}) = flip (flip (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) x
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
y: M
ys: list M
Hlast: last (y :: ys) = Some m
Hbase: y ∈ eval ρ base
Hfa: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (y :: ys) ys)
Heq: x :: l = reverse (y :: ys)
x0: M

(λ old : M, x0 ∈ app_ext (eval ρ step) {[old]}) = flip (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) x0
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
y: M
ys: list M
Hlast: last (y :: ys) = Some m
Hbase: y ∈ eval ρ base
Hfa: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (y :: ys) ys)
Heq: x :: l = reverse (y :: ys)
x0: M

βˆ€ x : M, (x0 ∈ app_ext (eval ρ step) {[x]}) = flip (flip (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) x0 x
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
y: M
ys: list M
Hlast: last (y :: ys) = Some m
Hbase: y ∈ eval ρ base
Hfa: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (y :: ys) ys)
Heq: x :: l = reverse (y :: ys)
x0, x1: M

(x0 ∈ app_ext (eval ρ step) {[x1]}) = flip (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) x0 x1
reflexivity.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
y: M
ys: list M
Hlast: last (y :: ys) = Some m
Hbase: y ∈ eval ρ base
Hfa: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (y :: ys) ys)
Heq: x :: l = reverse (y :: ys)
Hfeq': (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) = flip (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}))

Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (x :: l) (tail (x :: l)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
y: M
ys: list M
Hlast: last (y :: ys) = Some m
Hbase: y ∈ eval ρ base
Hfa: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (y :: ys) ys)
Heq: x :: l = reverse (y :: ys)
Hfeq': (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) = flip (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}))

Forall (uncurry (flip (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})))) (zip (x :: l) (tail (x :: l)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
y: M
ys: list M
Hlast: last (y :: ys) = Some m
Hbase: y ∈ eval ρ base
Hfa: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (y :: ys) ys)
Heq: x :: l = reverse (y :: ys)
Hfeq': (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) = flip (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}))

Forall (uncurry (flip (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})))) (zip (reverse (y :: ys)) (tail (reverse (y :: ys))))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
y: M
ys: list M
Hlast: last (y :: ys) = Some m
Hbase: y ∈ eval ρ base
Hfa: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (y :: ys) ys)
Heq: x :: l = reverse (y :: ys)
Hfeq': (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) = flip (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}))

Forall (uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}))) (zip (y :: ys) (tail (y :: ys)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x: M
l: list M
Feq: uncurry (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) = (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]})
y: M
ys: list M
Hlast: last (y :: ys) = Some m
Hbase: y ∈ eval ρ base
Hfa: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (y :: ys) ys)
Heq: x :: l = reverse (y :: ys)
Hfeq': (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) = flip (flip (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}))

Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (y :: ys) (tail (y :: ys)))
apply Hfa. Qed.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
l: list M

is_witnessing_sequence m l ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m) ↔ is_witnessing_sequence m' (m' :: l) ∧ l β‰  []
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
l: list M

is_witnessing_sequence m l ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m) ↔ is_witnessing_sequence m' (m' :: l) ∧ l β‰  []
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
l: list M

is_witnessing_sequence m l ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m) β†’ is_witnessing_sequence m' (m' :: l) ∧ l β‰  []
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
l: list M
is_witnessing_sequence m' (m' :: l) ∧ l β‰  [] β†’ is_witnessing_sequence m l ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
l: list M

is_witnessing_sequence m l ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m) β†’ is_witnessing_sequence m' (m' :: l) ∧ l β‰  []
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
l: list M
lst: M
Hlst: last l = Some lst
Hbase: lst ∈ eval ρ base
Hhd: head l = Some m
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

is_witnessing_sequence m' (m' :: l) ∧ l β‰  []
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
l: list M
lst: M
Hlst: last l = Some lst
Hbase: lst ∈ eval ρ base
Hhd: head l = Some m
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

is_witnessing_sequence m' (m' :: l)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
l: list M
lst: M
Hlst: last l = Some lst
Hbase: lst ∈ eval ρ base
Hhd: head l = Some m
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m
l β‰  []
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
l: list M
lst: M
Hlst: last l = Some lst
Hbase: lst ∈ eval ρ base
Hhd: head l = Some m
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

l β‰  []
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m', lst: M
Hlst: last [] = Some lst
Hbase: lst ∈ eval ρ base
Hhd: head [] = Some m
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [] (tail []))
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

[] β‰  []
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m', d: M
l: list M
lst: M
Hlst: last (d :: l) = Some lst
Hbase: lst ∈ eval ρ base
Hhd: head (d :: l) = Some m
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (d :: l) (tail (d :: l)))
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m
d :: l β‰  []
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m', lst: M
Hlst: last [] = Some lst
Hbase: lst ∈ eval ρ base
Hhd: None = Some m
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [] (tail []))
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

[] β‰  []
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m', d: M
l: list M
lst: M
Hlst: last (d :: l) = Some lst
Hbase: lst ∈ eval ρ base
Hhd: head (d :: l) = Some m
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (d :: l) (tail (d :: l)))
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m
d :: l β‰  []
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m', d: M
l: list M
lst: M
Hlst: last (d :: l) = Some lst
Hbase: lst ∈ eval ρ base
Hhd: head (d :: l) = Some m
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (d :: l) (tail (d :: l)))
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

d :: l β‰  []
discriminate.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
l: list M
lst: M
Hlst: last l = Some lst
Hbase: lst ∈ eval ρ base
Hhd: head l = Some m
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

is_witnessing_sequence m' (m' :: l)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
l: list M
lst: M
Hlst: last l = Some lst
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l))

βˆ€ m : M, head l = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: l)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
lst: M
Hlst: last [] = Some lst
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [] (tail []))
m: M
Hhd: head [] = Some m
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step

is_witnessing_sequence m' [m']
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
a: M
l: list M
lst: M
Hlst: last (a :: l) = Some lst
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (a :: l) (tail (a :: l)))
IHl: last l = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l)) β†’ βˆ€ m : M, head l = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: l)
m: M
Hhd: head (a :: l) = Some m
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step
is_witnessing_sequence m' (m' :: a :: l)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
lst: M
Hlst: last [] = Some lst
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [] (tail []))
m: M
Hhd: head [] = Some m
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step

is_witnessing_sequence m' [m']
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
lst: M
Hlst: last [] = Some lst
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [] (tail []))
m: M
Hhd: None = Some m
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step

is_witnessing_sequence m' [m']
inversion Hhd.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
a: M
l: list M
lst: M
Hlst: last (a :: l) = Some lst
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (a :: l) (tail (a :: l)))
IHl: last l = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l)) β†’ βˆ€ m : M, head l = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: l)
m: M
Hhd: head (a :: l) = Some m
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step

is_witnessing_sequence m' (m' :: a :: l)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
a: M
l: list M
lst: M
Hlst: last (a :: l) = Some lst
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (a :: l) (tail (a :: l)))
IHl: last l = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l)) β†’ βˆ€ m : M, head l = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: l)
m: M
Hhd: Some a = Some m
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step

is_witnessing_sequence m' (m' :: a :: l)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
a: M
l: list M
lst: M
Hlst: last (a :: l) = Some lst
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (a :: l) (tail (a :: l)))
IHl: last l = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l)) β†’ βˆ€ m : M, head l = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: l)
m: M
Hhd: Some a = Some m
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step
H0: a = m

is_witnessing_sequence m' (m' :: m :: l)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
l: list M
lst, m: M
Hhd: Some m = Some m
Hlst: last (m :: l) = Some lst
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l) (tail (m :: l)))
IHl: last l = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l)) β†’ βˆ€ m : M, head l = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: l)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step

is_witnessing_sequence m' (m' :: m :: l)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
l: list M
lst, m: M
Hlst: last (m :: l) = Some lst
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l) (tail (m :: l)))
IHl: last l = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l)) β†’ βˆ€ m : M, head l = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: l)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step

is_witnessing_sequence m' (m' :: m :: l)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
l: list M
lst, m: M
Hlst: last (m :: l) = Some lst
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l) (tail (m :: l)))
IHl: last l = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l (tail l)) β†’ βˆ€ m : M, head l = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: l)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step

(βˆƒ lst : M, last (m' :: m :: l) = Some lst ∧ lst ∈ eval ρ base) ∧ head (m' :: m :: l) = Some m' ∧ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m' :: m :: l) (tail (m' :: m :: l)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
lst, m: M
Hlst: last [m] = Some lst
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [m] (tail [m]))
IHl: last [] = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [] (tail [])) β†’ βˆ€ m : M, head [] = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' [m']
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step

(βˆƒ lst : M, last [m'; m] = Some lst ∧ lst ∈ eval ρ base) ∧ head [m'; m] = Some m' ∧ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [m'; m] (tail [m'; m]))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hlst: last (m :: d :: l) = Some lst
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: d :: l) (tail (m :: d :: l)))
IHl: last (d :: l) = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (d :: l) (tail (d :: l))) β†’ βˆ€ m : M, head (d :: l) = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: d :: l)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step
(βˆƒ lst : M, last (m' :: m :: d :: l) = Some lst ∧ lst ∈ eval ρ base) ∧ head (m' :: m :: d :: l) = Some m' ∧ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m' :: m :: d :: l) (tail (m' :: m :: d :: l)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
lst, m: M
Hlst: last [m] = Some lst
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [m] (tail [m]))
IHl: last [] = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [] (tail [])) β†’ βˆ€ m : M, head [] = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' [m']
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step

(βˆƒ lst : M, last [m'; m] = Some lst ∧ lst ∈ eval ρ base) ∧ head [m'; m] = Some m' ∧ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [m'; m] (tail [m'; m]))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
lst, m: M
Hlst: Some m = Some lst
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [m] (tail [m]))
IHl: last [] = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [] (tail [])) β†’ βˆ€ m : M, head [] = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' [m']
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step

(βˆƒ lst : M, last [m'; m] = Some lst ∧ lst ∈ eval ρ base) ∧ head [m'; m] = Some m' ∧ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [m'; m] (tail [m'; m]))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
lst, m: M
Hlst: Some m = Some lst
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [m] (tail [m]))
IHl: last [] = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [] (tail [])) β†’ βˆ€ m : M, head [] = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' [m']
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step
H0: m = lst

(βˆƒ lst0 : M, last [m'; lst] = Some lst0 ∧ lst0 ∈ eval ρ base) ∧ head [m'; lst] = Some m' ∧ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [m'; lst] (tail [m'; lst]))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
lst: M
Hlst: Some lst = Some lst
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [lst] (tail [lst]))
IHl: last [] = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [] (tail [])) β†’ βˆ€ m : M, head [] = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' [m']
m', step': M
Hm': m' ∈ app_interp M step' lst
Hstep': step' ∈ eval ρ step

(βˆƒ lst0 : M, last [m'; lst] = Some lst0 ∧ lst0 ∈ eval ρ base) ∧ head [m'; lst] = Some m' ∧ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [m'; lst] (tail [m'; lst]))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
lst: M
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [lst] (tail [lst]))
IHl: last [] = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [] (tail [])) β†’ βˆ€ m : M, head [] = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' [m']
m', step': M
Hm': m' ∈ app_interp M step' lst
Hstep': step' ∈ eval ρ step

(βˆƒ lst0 : M, last [m'; lst] = Some lst0 ∧ lst0 ∈ eval ρ base) ∧ head [m'; lst] = Some m' ∧ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [m'; lst] (tail [m'; lst]))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
lst: M
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [lst] (tail [lst]))
IHl: last [] = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [] (tail [])) β†’ βˆ€ m : M, head [] = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' [m']
m', step': M
Hm': m' ∈ app_interp M step' lst
Hstep': step' ∈ eval ρ step

βˆƒ lst0 : M, last [m'; lst] = Some lst0 ∧ lst0 ∈ eval ρ base
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
lst: M
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [lst] (tail [lst]))
IHl: last [] = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [] (tail [])) β†’ βˆ€ m : M, head [] = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' [m']
m', step': M
Hm': m' ∈ app_interp M step' lst
Hstep': step' ∈ eval ρ step
head [m'; lst] = Some m' ∧ Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [m'; lst] (tail [m'; lst]))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
lst: M
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [lst] (tail [lst]))
IHl: last [] = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [] (tail [])) β†’ βˆ€ m : M, head [] = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' [m']
m', step': M
Hm': m' ∈ app_interp M step' lst
Hstep': step' ∈ eval ρ step

βˆƒ lst0 : M, last [m'; lst] = Some lst0 ∧ lst0 ∈ eval ρ base
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
lst: M
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [lst] (tail [lst]))
IHl: last [] = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [] (tail [])) β†’ βˆ€ m : M, head [] = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' [m']
m', step': M
Hm': m' ∈ app_interp M step' lst
Hstep': step' ∈ eval ρ step

last [m'; lst] = Some lst ∧ lst ∈ eval ρ base
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
lst: M
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [lst] (tail [lst]))
IHl: last [] = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [] (tail [])) β†’ βˆ€ m : M, head [] = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' [m']
m', step': M
Hm': m' ∈ app_interp M step' lst
Hstep': step' ∈ eval ρ step

Some lst = Some lst ∧ lst ∈ eval ρ base
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
lst: M
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [lst] (tail [lst]))
IHl: last [] = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [] (tail [])) β†’ βˆ€ m : M, head [] = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' [m']
m', step': M
Hm': m' ∈ app_interp M step' lst
Hstep': step' ∈ eval ρ step

Some lst = Some lst
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
lst: M
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [lst] (tail [lst]))
IHl: last [] = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [] (tail [])) β†’ βˆ€ m : M, head [] = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' [m']
m', step': M
Hm': m' ∈ app_interp M step' lst
Hstep': step' ∈ eval ρ step
lst ∈ eval ρ base
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
lst: M
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [lst] (tail [lst]))
IHl: last [] = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [] (tail [])) β†’ βˆ€ m : M, head [] = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' [m']
m', step': M
Hm': m' ∈ app_interp M step' lst
Hstep': step' ∈ eval ρ step

lst ∈ eval ρ base
apply Hbase.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
lst: M
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [lst] (tail [lst]))
IHl: last [] = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [] (tail [])) β†’ βˆ€ m : M, head [] = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' [m']
m', step': M
Hm': m' ∈ app_interp M step' lst
Hstep': step' ∈ eval ρ step

head [m'; lst] = Some m' ∧ Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [m'; lst] (tail [m'; lst]))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
lst: M
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [lst] (tail [lst]))
IHl: last [] = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [] (tail [])) β†’ βˆ€ m : M, head [] = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' [m']
m', step': M
Hm': m' ∈ app_interp M step' lst
Hstep': step' ∈ eval ρ step

Some m' = Some m' ∧ Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) [(m', lst)]
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
lst: M
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [lst] (tail [lst]))
IHl: last [] = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [] (tail [])) β†’ βˆ€ m : M, head [] = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' [m']
m', step': M
Hm': m' ∈ app_interp M step' lst
Hstep': step' ∈ eval ρ step

Some m' = Some m'
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
lst: M
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [lst] (tail [lst]))
IHl: last [] = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [] (tail [])) β†’ βˆ€ m : M, head [] = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' [m']
m', step': M
Hm': m' ∈ app_interp M step' lst
Hstep': step' ∈ eval ρ step
Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) [(m', lst)]
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
lst: M
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [lst] (tail [lst]))
IHl: last [] = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [] (tail [])) β†’ βˆ€ m : M, head [] = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' [m']
m', step': M
Hm': m' ∈ app_interp M step' lst
Hstep': step' ∈ eval ρ step

Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) [(m', lst)]
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
lst: M
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [lst] (tail [lst]))
IHl: last [] = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [] (tail [])) β†’ βˆ€ m : M, head [] = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' [m']
m', step': M
Hm': m' ∈ app_interp M step' lst
Hstep': step' ∈ eval ρ step

uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m', lst) ∧ Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) []
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
lst: M
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [lst] (tail [lst]))
IHl: last [] = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [] (tail [])) β†’ βˆ€ m : M, head [] = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' [m']
m', step': M
Hm': m' ∈ app_interp M step' lst
Hstep': step' ∈ eval ρ step

uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m', lst)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
lst: M
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [lst] (tail [lst]))
IHl: last [] = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [] (tail [])) β†’ βˆ€ m : M, head [] = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' [m']
m', step': M
Hm': m' ∈ app_interp M step' lst
Hstep': step' ∈ eval ρ step
Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) []
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
lst: M
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [lst] (tail [lst]))
IHl: last [] = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [] (tail [])) β†’ βˆ€ m : M, head [] = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' [m']
m', step': M
Hm': m' ∈ app_interp M step' lst
Hstep': step' ∈ eval ρ step

βˆƒ re : M, step' ∈ eval ρ step ∧ re ∈ {[lst]} ∧ m' ∈ app_interp M step' re
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
lst: M
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [lst] (tail [lst]))
IHl: last [] = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [] (tail [])) β†’ βˆ€ m : M, head [] = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' [m']
m', step': M
Hm': m' ∈ app_interp M step' lst
Hstep': step' ∈ eval ρ step
Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) []
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
lst: M
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [lst] (tail [lst]))
IHl: last [] = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [] (tail [])) β†’ βˆ€ m : M, head [] = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' [m']
m', step': M
Hm': m' ∈ app_interp M step' lst
Hstep': step' ∈ eval ρ step

step' ∈ eval ρ step ∧ lst ∈ {[lst]} ∧ m' ∈ app_interp M step' lst
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
lst: M
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [lst] (tail [lst]))
IHl: last [] = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [] (tail [])) β†’ βˆ€ m : M, head [] = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' [m']
m', step': M
Hm': m' ∈ app_interp M step' lst
Hstep': step' ∈ eval ρ step
Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) []
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
lst: M
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [lst] (tail [lst]))
IHl: last [] = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [] (tail [])) β†’ βˆ€ m : M, head [] = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' [m']
m', step': M
Hm': m' ∈ app_interp M step' lst
Hstep': step' ∈ eval ρ step

step' ∈ eval ρ step
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
lst: M
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [lst] (tail [lst]))
IHl: last [] = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [] (tail [])) β†’ βˆ€ m : M, head [] = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' [m']
m', step': M
Hm': m' ∈ app_interp M step' lst
Hstep': step' ∈ eval ρ step
lst ∈ {[lst]} ∧ m' ∈ app_interp M step' lst
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
lst: M
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [lst] (tail [lst]))
IHl: last [] = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [] (tail [])) β†’ βˆ€ m : M, head [] = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' [m']
m', step': M
Hm': m' ∈ app_interp M step' lst
Hstep': step' ∈ eval ρ step
Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) []
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
lst: M
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [lst] (tail [lst]))
IHl: last [] = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [] (tail [])) β†’ βˆ€ m : M, head [] = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' [m']
m', step': M
Hm': m' ∈ app_interp M step' lst
Hstep': step' ∈ eval ρ step

lst ∈ {[lst]} ∧ m' ∈ app_interp M step' lst
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
lst: M
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [lst] (tail [lst]))
IHl: last [] = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [] (tail [])) β†’ βˆ€ m : M, head [] = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' [m']
m', step': M
Hm': m' ∈ app_interp M step' lst
Hstep': step' ∈ eval ρ step
Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) []
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
lst: M
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [lst] (tail [lst]))
IHl: last [] = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [] (tail [])) β†’ βˆ€ m : M, head [] = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' [m']
m', step': M
Hm': m' ∈ app_interp M step' lst
Hstep': step' ∈ eval ρ step

lst ∈ {[lst]}
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
lst: M
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [lst] (tail [lst]))
IHl: last [] = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [] (tail [])) β†’ βˆ€ m : M, head [] = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' [m']
m', step': M
Hm': m' ∈ app_interp M step' lst
Hstep': step' ∈ eval ρ step
m' ∈ app_interp M step' lst
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
lst: M
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [lst] (tail [lst]))
IHl: last [] = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [] (tail [])) β†’ βˆ€ m : M, head [] = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' [m']
m', step': M
Hm': m' ∈ app_interp M step' lst
Hstep': step' ∈ eval ρ step
Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) []
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
lst: M
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [lst] (tail [lst]))
IHl: last [] = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [] (tail [])) β†’ βˆ€ m : M, head [] = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' [m']
m', step': M
Hm': m' ∈ app_interp M step' lst
Hstep': step' ∈ eval ρ step

m' ∈ app_interp M step' lst
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
lst: M
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [lst] (tail [lst]))
IHl: last [] = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [] (tail [])) β†’ βˆ€ m : M, head [] = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' [m']
m', step': M
Hm': m' ∈ app_interp M step' lst
Hstep': step' ∈ eval ρ step
Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) []
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
lst: M
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [lst] (tail [lst]))
IHl: last [] = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [] (tail [])) β†’ βˆ€ m : M, head [] = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' [m']
m', step': M
Hm': m' ∈ app_interp M step' lst
Hstep': step' ∈ eval ρ step

Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) []
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
lst: M
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [lst] (tail [lst]))
IHl: last [] = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [] (tail [])) β†’ βˆ€ m : M, head [] = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' [m']
m', step': M
Hm': m' ∈ app_interp M step' lst
Hstep': step' ∈ eval ρ step

True
exact I.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hlst: last (m :: d :: l) = Some lst
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: d :: l) (tail (m :: d :: l)))
IHl: last (d :: l) = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (d :: l) (tail (d :: l))) β†’ βˆ€ m : M, head (d :: l) = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: d :: l)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step

(βˆƒ lst : M, last (m' :: m :: d :: l) = Some lst ∧ lst ∈ eval ρ base) ∧ head (m' :: m :: d :: l) = Some m' ∧ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m' :: m :: d :: l) (tail (m' :: m :: d :: l)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hlst: last (m :: d :: l) = Some lst
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: d :: l) (tail (m :: d :: l)))
IHl: last (d :: l) = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (d :: l) (tail (d :: l))) β†’ βˆ€ m : M, head (d :: l) = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: d :: l)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step

βˆƒ lst : M, last (m' :: m :: d :: l) = Some lst ∧ lst ∈ eval ρ base
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hlst: last (m :: d :: l) = Some lst
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: d :: l) (tail (m :: d :: l)))
IHl: last (d :: l) = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (d :: l) (tail (d :: l))) β†’ βˆ€ m : M, head (d :: l) = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: d :: l)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step
head (m' :: m :: d :: l) = Some m' ∧ Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m' :: m :: d :: l) (tail (m' :: m :: d :: l)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hlst: last (m :: d :: l) = Some lst
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: d :: l) (tail (m :: d :: l)))
IHl: last (d :: l) = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (d :: l) (tail (d :: l))) β†’ βˆ€ m : M, head (d :: l) = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: d :: l)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step

βˆƒ lst : M, last (m' :: m :: d :: l) = Some lst ∧ lst ∈ eval ρ base
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hlst: last (m :: d :: l) = Some lst
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: d :: l) (tail (m :: d :: l)))
IHl: last (d :: l) = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (d :: l) (tail (d :: l))) β†’ βˆ€ m : M, head (d :: l) = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: d :: l)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step

last (m' :: m :: d :: l) = Some lst ∧ lst ∈ eval ρ base
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hlst: last (m :: d :: l) = Some lst
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: d :: l) (tail (m :: d :: l)))
IHl: last (d :: l) = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (d :: l) (tail (d :: l))) β†’ βˆ€ m : M, head (d :: l) = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: d :: l)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step

last (m' :: m :: d :: l) = Some lst
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hlst: last (m :: d :: l) = Some lst
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: d :: l) (tail (m :: d :: l)))
IHl: last (d :: l) = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (d :: l) (tail (d :: l))) β†’ βˆ€ m : M, head (d :: l) = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: d :: l)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step
lst ∈ eval ρ base
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hlst: last (m :: d :: l) = Some lst
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: d :: l) (tail (m :: d :: l)))
IHl: last (d :: l) = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (d :: l) (tail (d :: l))) β†’ βˆ€ m : M, head (d :: l) = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: d :: l)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step

last (d :: l) = Some lst
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hlst: last (m :: d :: l) = Some lst
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: d :: l) (tail (m :: d :: l)))
IHl: last (d :: l) = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (d :: l) (tail (d :: l))) β†’ βˆ€ m : M, head (d :: l) = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: d :: l)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step
lst ∈ eval ρ base
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hlst: last (d :: l) = Some lst
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: d :: l) (tail (m :: d :: l)))
IHl: last (d :: l) = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (d :: l) (tail (d :: l))) β†’ βˆ€ m : M, head (d :: l) = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: d :: l)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step

last (d :: l) = Some lst
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hlst: last (m :: d :: l) = Some lst
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: d :: l) (tail (m :: d :: l)))
IHl: last (d :: l) = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (d :: l) (tail (d :: l))) β†’ βˆ€ m : M, head (d :: l) = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: d :: l)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step
lst ∈ eval ρ base
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hlst: last (m :: d :: l) = Some lst
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: d :: l) (tail (m :: d :: l)))
IHl: last (d :: l) = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (d :: l) (tail (d :: l))) β†’ βˆ€ m : M, head (d :: l) = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: d :: l)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step

lst ∈ eval ρ base
apply Hbase.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hlst: last (m :: d :: l) = Some lst
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: d :: l) (tail (m :: d :: l)))
IHl: last (d :: l) = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (d :: l) (tail (d :: l))) β†’ βˆ€ m : M, head (d :: l) = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: d :: l)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step

head (m' :: m :: d :: l) = Some m' ∧ Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m' :: m :: d :: l) (tail (m' :: m :: d :: l)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hlst: last (m :: d :: l) = Some lst
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: d :: l) (tail (m :: d :: l)))
IHl: last (d :: l) = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (d :: l) (tail (d :: l))) β†’ βˆ€ m : M, head (d :: l) = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: d :: l)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step

head (m' :: m :: d :: l) = Some m'
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hlst: last (m :: d :: l) = Some lst
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: d :: l) (tail (m :: d :: l)))
IHl: last (d :: l) = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (d :: l) (tail (d :: l))) β†’ βˆ€ m : M, head (d :: l) = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: d :: l)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step
Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m' :: m :: d :: l) (tail (m' :: m :: d :: l)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hlst: last (m :: d :: l) = Some lst
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: d :: l) (tail (m :: d :: l)))
IHl: last (d :: l) = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (d :: l) (tail (d :: l))) β†’ βˆ€ m : M, head (d :: l) = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: d :: l)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step

head (m' :: m :: d :: l) = Some m'
reflexivity.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hlst: last (m :: d :: l) = Some lst
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: d :: l) (tail (m :: d :: l)))
IHl: last (d :: l) = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (d :: l) (tail (d :: l))) β†’ βˆ€ m : M, head (d :: l) = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: d :: l)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step

Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m' :: m :: d :: l) (tail (m' :: m :: d :: l)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hlst: last (m :: d :: l) = Some lst
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) ((m, d) :: match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end)
IHl: last (d :: l) = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (d :: l) (tail (d :: l))) β†’ βˆ€ m : M, head (d :: l) = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: d :: l)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step

Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m' :: m :: d :: l) (tail (m' :: m :: d :: l)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hlst: last (m :: d :: l) = Some lst
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) ((m, d) :: match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end)
IHl: last (d :: l) = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (d :: l) (tail (d :: l))) β†’ βˆ€ m : M, head (d :: l) = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: d :: l)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step

Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) ((m', m) :: (m, d) :: match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hlst: last (m :: d :: l) = Some lst
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) ((m, d) :: match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end)
IHl: last (d :: l) = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (d :: l) (tail (d :: l))) β†’ βˆ€ m : M, head (d :: l) = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: d :: l)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step

uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m', m) ∧ Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) ((m, d) :: match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hlst: last (m :: d :: l) = Some lst
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) ((m, d) :: match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end)
IHl: last (d :: l) = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end β†’ βˆ€ m : M, Some d = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: d :: l)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step

uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m', m) ∧ Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) ((m, d) :: match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hlst: last (d :: l) = Some lst
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) ((m, d) :: match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end)
IHl: last (d :: l) = Some lst β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end β†’ βˆ€ m : M, Some d = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: d :: l)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step

uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m', m) ∧ Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) ((m, d) :: match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hlst: last (d :: l) = Some lst
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) ((m, d) :: match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end)
IHl: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end β†’ βˆ€ m : M, Some d = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: d :: l)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step

uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m', m) ∧ Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) ((m, d) :: match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hlst: last (d :: l) = Some lst
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) ((m, d) :: match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end)
IHl: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end β†’ βˆ€ m : M, Some d = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: d :: l)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step
x: (M * M)%type
l0: list (M * M)
H1: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, d)
H2: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end
H: x = (m, d)
H0: l0 = match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end

uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m', m) ∧ Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) ((m, d) :: match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hlst: last (d :: l) = Some lst
Hbase: lst ∈ eval ρ base
Hwit: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) ((m, d) :: match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end)
IHl: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end β†’ βˆ€ m : M, Some d = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: d :: l)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step
H1: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, d)
H2: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end

uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m', m) ∧ Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) ((m, d) :: match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hlst: last (d :: l) = Some lst
Hbase: lst ∈ eval ρ base
IHl: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end β†’ βˆ€ m : M, Some d = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: d :: l)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step
H1: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, d)
H2: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end

uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m', m) ∧ Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) ((m, d) :: match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hlst: last (d :: l) = Some lst
Hbase: lst ∈ eval ρ base
IHl: βˆ€ m : M, Some d = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: d :: l)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step
H1: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, d)
H2: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end

uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m', m) ∧ Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) ((m, d) :: match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hbase: lst ∈ eval ρ base
IHl: βˆ€ m : M, Some d = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: d :: l)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step
H1: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, d)

uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m', m) ∧ Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) ((m, d) :: match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hbase: lst ∈ eval ρ base
IHl: βˆ€ m : M, Some d = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: d :: l)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step
H1: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, d)

uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m', m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hbase: lst ∈ eval ρ base
IHl: βˆ€ m : M, Some d = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: d :: l)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step
H1: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, d)
Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) ((m, d) :: match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hbase: lst ∈ eval ρ base
IHl: βˆ€ m : M, Some d = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: d :: l)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step
H1: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, d)

uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m', m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hbase: lst ∈ eval ρ base
IHl: βˆ€ m : M, Some d = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: d :: l)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step
H1: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, d)

βˆƒ re : M, step' ∈ eval ρ step ∧ re ∈ {[m]} ∧ m' ∈ app_interp M step' re
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hbase: lst ∈ eval ρ base
IHl: βˆ€ m : M, Some d = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: d :: l)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step
H1: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, d)

step' ∈ eval ρ step ∧ m ∈ {[m]} ∧ m' ∈ app_interp M step' m
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hbase: lst ∈ eval ρ base
IHl: βˆ€ m : M, Some d = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: d :: l)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step
H1: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, d)

step' ∈ eval ρ step
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hbase: lst ∈ eval ρ base
IHl: βˆ€ m : M, Some d = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: d :: l)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step
H1: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, d)
m ∈ {[m]} ∧ m' ∈ app_interp M step' m
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hbase: lst ∈ eval ρ base
IHl: βˆ€ m : M, Some d = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: d :: l)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step
H1: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, d)

m ∈ {[m]} ∧ m' ∈ app_interp M step' m
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hbase: lst ∈ eval ρ base
IHl: βˆ€ m : M, Some d = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: d :: l)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step
H1: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, d)

m ∈ {[m]}
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hbase: lst ∈ eval ρ base
IHl: βˆ€ m : M, Some d = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: d :: l)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step
H1: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, d)
m' ∈ app_interp M step' m
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hbase: lst ∈ eval ρ base
IHl: βˆ€ m : M, Some d = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: d :: l)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step
H1: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, d)

m' ∈ app_interp M step' m
apply Hm'.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hbase: lst ∈ eval ρ base
IHl: βˆ€ m : M, Some d = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: d :: l)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step
H1: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, d)

Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) ((m, d) :: match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hbase: lst ∈ eval ρ base
IHl: βˆ€ m : M, Some d = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: d :: l)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step
H1: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, d)

uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, d) ∧ Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hbase: lst ∈ eval ρ base
IHl: βˆ€ m : M, Some d = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: d :: l)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step
H1: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, d)

uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, d)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hbase: lst ∈ eval ρ base
IHl: βˆ€ m : M, Some d = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: d :: l)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step
H1: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, d)
Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hbase: lst ∈ eval ρ base
IHl: βˆ€ m : M, Some d = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: d :: l)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step
H1: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, d)

uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, d)
apply H1.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hbase: lst ∈ eval ρ base
IHl: βˆ€ m : M, Some d = Some m β†’ βˆ€ m' step' : M, m' ∈ app_interp M step' m β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: d :: l)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step
H1: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, d)

Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hbase: lst ∈ eval ρ base
IHl: βˆ€ m' step' : M, m' ∈ app_interp M step' d β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: d :: l)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step
H1: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, d)

Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hbase: lst ∈ eval ρ base
IHl: βˆ€ m' step' : M, m' ∈ app_interp M step' d β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: d :: l)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step
step'', d'': M
Hstep'': step'' ∈ eval ρ step
Hd'': d'' ∈ {[d]}
Hstep''d'': m ∈ app_interp M step'' d''

Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hbase: lst ∈ eval ρ base
IHl: βˆ€ m' step' : M, m' ∈ app_interp M step' d β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: d :: l)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step
step'', d'': M
Hstep'': step'' ∈ eval ρ step
Hd'': d'' ∈ {[d]}
Hstep''d'': m ∈ app_interp M step'' d''
H: d = d''

Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l with | [] => [] | x2 :: l2 => (d'', x2) :: zip l l2 end
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hbase: lst ∈ eval ρ base
IHl: βˆ€ m' step' : M, m' ∈ app_interp M step' d β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: d :: l)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step
step'': M
Hstep'': step'' ∈ eval ρ step
Hstep''d'': m ∈ app_interp M step'' d
Hd'': d ∈ {[d]}

Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hbase: lst ∈ eval ρ base
IHl: βˆ€ m' step' : M, m' ∈ app_interp M step' d β†’ step' ∈ eval ρ step β†’ is_witnessing_sequence m' (m' :: d :: l)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step
step'': M
Hstep'': step'' ∈ eval ρ step
Hstep''d'': m ∈ app_interp M step'' d

Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hbase: lst ∈ eval ρ base
IHl: is_witnessing_sequence m (m :: d :: l)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step
step'': M
Hstep'': step'' ∈ eval ρ step
Hstep''d'': m ∈ app_interp M step'' d

Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hbase: lst ∈ eval ρ base
IHl: (βˆƒ lst : M, last (m :: d :: l) = Some lst ∧ lst ∈ eval ρ base) ∧ head (m :: d :: l) = Some m ∧ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: d :: l) (tail (m :: d :: l)))
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step
step'': M
Hstep'': step'' ∈ eval ρ step
Hstep''d'': m ∈ app_interp M step'' d

Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hbase: lst ∈ eval ρ base
IHl: (βˆƒ lst : M, last (d :: l) = Some lst ∧ lst ∈ eval ρ base) ∧ Some m = Some m ∧ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) ((m, d) :: match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step
step'': M
Hstep'': step'' ∈ eval ρ step
Hstep''d'': m ∈ app_interp M step'' d

Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hbase: lst ∈ eval ρ base
Hforall: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) ((m, d) :: match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step
step'': M
Hstep'': step'' ∈ eval ρ step
Hstep''d'': m ∈ app_interp M step'' d

Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hbase: lst ∈ eval ρ base
Hforall: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) ((m, d) :: match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step
step'': M
Hstep'': step'' ∈ eval ρ step
Hstep''d'': m ∈ app_interp M step'' d
x: (M * M)%type
l0: list (M * M)
H1: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, d)
H2: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end
H: x = (m, d)
H0: l0 = match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end

Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
d: M
l: list M
lst, m: M
Hbase: lst ∈ eval ρ base
Hforall: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) ((m, d) :: match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end)
m', step': M
Hm': m' ∈ app_interp M step' m
Hstep': step' ∈ eval ρ step
step'': M
Hstep'': step'' ∈ eval ρ step
Hstep''d'': m ∈ app_interp M step'' d
H1: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, d)
H2: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end

Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end
apply H2.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
l: list M

is_witnessing_sequence m' (m' :: l) ∧ l β‰  [] β†’ is_witnessing_sequence m l ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Abort.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
l: list M

is_witnessing_sequence_old m (x :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m) ↔ last (x :: l) = Some m ∧ is_witnessing_sequence_old m' ((x :: l) ++ [m'])
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
l: list M

is_witnessing_sequence_old m (x :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m) ↔ last (x :: l) = Some m ∧ is_witnessing_sequence_old m' ((x :: l) ++ [m'])
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
l: list M

is_witnessing_sequence_old m (x :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m) β†’ last (x :: l) = Some m ∧ is_witnessing_sequence_old m' ((x :: l) ++ [m'])
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
l: list M
last (x :: l) = Some m ∧ is_witnessing_sequence_old m' ((x :: l) ++ [m']) β†’ is_witnessing_sequence_old m (x :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
l: list M

is_witnessing_sequence_old m (x :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m) β†’ last (x :: l) = Some m ∧ is_witnessing_sequence_old m' ((x :: l) ++ [m'])
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
l: list M
Hwit: is_witnessing_sequence_old m (x :: l)
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

last (x :: l) = Some m ∧ is_witnessing_sequence_old m' ((x :: l) ++ [m'])
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
l: list M
Hwit1: last (x :: l) = Some m
Hwit2: x ∈ eval ρ base
Hwit3: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l)
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

last (x :: l) = Some m ∧ is_witnessing_sequence_old m' ((x :: l) ++ [m'])
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
l: list M
Hwit1: last (x :: l) = Some m
Hwit2: x ∈ eval ρ base
Hwit3: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l)
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

last (x :: l) = Some m
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
l: list M
Hwit1: last (x :: l) = Some m
Hwit2: x ∈ eval ρ base
Hwit3: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l)
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m
is_witnessing_sequence_old m' ((x :: l) ++ [m'])
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
l: list M
Hwit1: last (x :: l) = Some m
Hwit2: x ∈ eval ρ base
Hwit3: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l)
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

last (x :: l) = Some m
apply Hwit1.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
l: list M
Hwit1: last (x :: l) = Some m
Hwit2: x ∈ eval ρ base
Hwit3: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l)
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

is_witnessing_sequence_old m' ((x :: l) ++ [m'])
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
l: list M
Hwit1: last (x :: l) = Some m
Hwit2: x ∈ eval ρ base
Hwit3: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l)
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

last ((x :: l) ++ [m']) = Some m'
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
l: list M
Hwit1: last (x :: l) = Some m
Hwit2: x ∈ eval ρ base
Hwit3: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l)
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m
match (x :: l) ++ [m'] with | [] => False | mβ‚€ :: ms => mβ‚€ ∈ eval ρ base ∧ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (mβ‚€ :: ms) ms) end
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
l: list M
Hwit1: last (x :: l) = Some m
Hwit2: x ∈ eval ρ base
Hwit3: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l)
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

last ((x :: l) ++ [m']) = Some m'
apply last_snoc.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
l: list M
Hwit1: last (x :: l) = Some m
Hwit2: x ∈ eval ρ base
Hwit3: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l)
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

match (x :: l) ++ [m'] with | [] => False | mβ‚€ :: ms => mβ‚€ ∈ eval ρ base ∧ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (mβ‚€ :: ms) ms) end
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
l: list M
Hwit1: last (x :: l) = Some m
Hwit2: x ∈ eval ρ base
Hwit3: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l)
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

x ∈ eval ρ base ∧ Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
l: list M
Hwit1: last (x :: l) = Some m
Hwit2: x ∈ eval ρ base
Hwit3: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l)
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

x ∈ eval ρ base
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
l: list M
Hwit1: last (x :: l) = Some m
Hwit2: x ∈ eval ρ base
Hwit3: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l)
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m
Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
l: list M
Hwit1: last (x :: l) = Some m
Hwit2: x ∈ eval ρ base
Hwit3: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l)
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

x ∈ eval ρ base
apply Hwit2.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
l: list M
Hwit1: last (x :: l) = Some m
Hwit2: x ∈ eval ρ base
Hwit3: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l)
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
Hwit1: last [x] = Some m
Hwit2: x ∈ eval ρ base
Hwit3: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [x] [])
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match [] ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip ([] ++ [m']) l2 end
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m', d: M
l: list M
Hwit1: last (x :: d :: l) = Some m
Hwit2: x ∈ eval ρ base
Hwit3: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: d :: l) (d :: l))
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m
Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match (d :: l) ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip ((d :: l) ++ [m']) l2 end
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
Hwit1: last [x] = Some m
Hwit2: x ∈ eval ρ base
Hwit3: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [x] [])
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match [] ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip ([] ++ [m']) l2 end
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
Hwit1: last [x] = Some m
Hwit2: x ∈ eval ρ base
Hwit3: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [x] [])
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) [(x, m')]
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
Hwit1: last [x] = Some m
Hwit2: x ∈ eval ρ base
Hwit3: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [x] [])
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

m' ∈ app_ext (eval ρ step) {[x]} ∧ Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
Hwit1: last [x] = Some m
Hwit2: x ∈ eval ρ base
Hwit3: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [x] [])
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

m' ∈ app_ext (eval ρ step) {[x]}
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
Hwit1: last [x] = Some m
Hwit2: x ∈ eval ρ base
Hwit3: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [x] [])
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m
Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
Hwit1: last [x] = Some m
Hwit2: x ∈ eval ρ base
Hwit3: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [x] [])
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
Hwit1: last [x] = Some m
Hwit2: x ∈ eval ρ base
Hwit3: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [x] [])
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

True
exact I.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
Hwit1: last [x] = Some m
Hwit2: x ∈ eval ρ base
Hwit3: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [x] [])
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

m' ∈ app_ext (eval ρ step) {[x]}
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
Hwit1: last [x] = Some m
Hwit2: x ∈ eval ρ base
Hwit3: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [x] [])
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

βˆƒ re : M, step' ∈ eval ρ step ∧ re ∈ {[x]} ∧ m' ∈ app_interp M step' re
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
Hwit1: last [x] = Some m
Hwit2: x ∈ eval ρ base
Hwit3: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [x] [])
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

step' ∈ eval ρ step ∧ x ∈ {[x]} ∧ m' ∈ app_interp M step' x
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
Hwit1: last [x] = Some m
Hwit2: x ∈ eval ρ base
Hwit3: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [x] [])
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

step' ∈ eval ρ step
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
Hwit1: last [x] = Some m
Hwit2: x ∈ eval ρ base
Hwit3: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [x] [])
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m
x ∈ {[x]} ∧ m' ∈ app_interp M step' x
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
Hwit1: last [x] = Some m
Hwit2: x ∈ eval ρ base
Hwit3: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [x] [])
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

step' ∈ eval ρ step
apply Hstep'.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
Hwit1: last [x] = Some m
Hwit2: x ∈ eval ρ base
Hwit3: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [x] [])
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

x ∈ {[x]} ∧ m' ∈ app_interp M step' x
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
Hwit1: last [x] = Some m
Hwit2: x ∈ eval ρ base
Hwit3: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [x] [])
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

x ∈ {[x]}
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
Hwit1: last [x] = Some m
Hwit2: x ∈ eval ρ base
Hwit3: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [x] [])
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m
m' ∈ app_interp M step' x
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
Hwit1: last [x] = Some m
Hwit2: x ∈ eval ρ base
Hwit3: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [x] [])
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

x ∈ {[x]}
constructor.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
Hwit1: last [x] = Some m
Hwit2: x ∈ eval ρ base
Hwit3: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [x] [])
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

m' ∈ app_interp M step' x
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
Hwit1: Some x = Some m
Hwit2: x ∈ eval ρ base
Hwit3: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [x] [])
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

m' ∈ app_interp M step' x
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
Hwit1: Some x = Some m
Hwit2: x ∈ eval ρ base
Hwit3: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [x] [])
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m
H0: x = m

m' ∈ app_interp M step' m
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
Hwit3: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [m] [])
Hwit2: m ∈ eval ρ base
Hwit1: Some m = Some m
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

m' ∈ app_interp M step' m
apply Hm'.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m', d: M
l: list M
Hwit1: last (x :: d :: l) = Some m
Hwit2: x ∈ eval ρ base
Hwit3: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: d :: l) (d :: l))
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match (d :: l) ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip ((d :: l) ++ [m']) l2 end
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m', d: M
l: list M
Hwit1: last (x :: d :: l) = Some m
Hwit2: x ∈ eval ρ base
Hwit3: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: d :: l) (d :: l))
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) ((x, d) :: match l ++ [m'] with | [] => [] | x2 :: l2 => (d, x2) :: zip (l ++ [m']) l2 end)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m', d: M
l: list M
Hwit1: last (x :: d :: l) = Some m
Hwit2: x ∈ eval ρ base
Hwit3: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: d :: l) (d :: l))
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

d ∈ app_ext (eval ρ step) {[x]} ∧ Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (d, x2) :: zip (l ++ [m']) l2 end
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m', d: M
l: list M
Hwit1: last (x :: d :: l) = Some m
Hwit2: x ∈ eval ρ base
Hwit3: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) ((x, d) :: match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end)
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

d ∈ app_ext (eval ρ step) {[x]} ∧ Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (d, x2) :: zip (l ++ [m']) l2 end
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m', d: M
l: list M
Hwit1: last (x :: d :: l) = Some m
Hwit2: x ∈ eval ρ base
Hwit3: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) ((x, d) :: match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end)
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m
x0: (M * M)%type
l0: list (M * M)
H1: d ∈ app_ext (eval ρ step) {[x]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end
H: x0 = (x, d)
H0: l0 = match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end

d ∈ app_ext (eval ρ step) {[x]} ∧ Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (d, x2) :: zip (l ++ [m']) l2 end
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m', d: M
l: list M
Hwit1: last (x :: d :: l) = Some m
Hwit2: x ∈ eval ρ base
Hwit3: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) ((x, d) :: match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end)
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m
H1: d ∈ app_ext (eval ρ step) {[x]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end

d ∈ app_ext (eval ρ step) {[x]} ∧ Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (d, x2) :: zip (l ++ [m']) l2 end
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m', d: M
l: list M
Hwit1: last (x :: d :: l) = Some m
Hwit2: x ∈ eval ρ base
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m
H1: d ∈ app_ext (eval ρ step) {[x]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end

d ∈ app_ext (eval ρ step) {[x]} ∧ Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (d, x2) :: zip (l ++ [m']) l2 end
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m', d: M
l: list M
Hwit1: last (x :: d :: l) = Some m
Hwit2: x ∈ eval ρ base
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m
Hd: d ∈ app_ext (eval ρ step) {[x]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end

d ∈ app_ext (eval ρ step) {[x]} ∧ Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (d, x2) :: zip (l ++ [m']) l2 end
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m', d: M
l: list M
Hwit1: last (x :: d :: l) = Some m
Hwit2: x ∈ eval ρ base
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m
Hd: d ∈ app_ext (eval ρ step) {[x]}
Hwit: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end

d ∈ app_ext (eval ρ step) {[x]} ∧ Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (d, x2) :: zip (l ++ [m']) l2 end
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m', d: M
l: list M
Hwit1: last (x :: d :: l) = Some m
Hwit2: x ∈ eval ρ base
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m
Hd: d ∈ app_ext (eval ρ step) {[x]}
Hwit: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end

d ∈ app_ext (eval ρ step) {[x]}
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m', d: M
l: list M
Hwit1: last (x :: d :: l) = Some m
Hwit2: x ∈ eval ρ base
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m
Hd: d ∈ app_ext (eval ρ step) {[x]}
Hwit: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end
Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (d, x2) :: zip (l ++ [m']) l2 end
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m', d: M
l: list M
Hwit1: last (x :: d :: l) = Some m
Hwit2: x ∈ eval ρ base
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m
Hd: d ∈ app_ext (eval ρ step) {[x]}
Hwit: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end

d ∈ app_ext (eval ρ step) {[x]}
apply Hd.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m', d: M
l: list M
Hwit1: last (x :: d :: l) = Some m
Hwit2: x ∈ eval ρ base
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m
Hd: d ∈ app_ext (eval ρ step) {[x]}
Hwit: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end

Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (d, x2) :: zip (l ++ [m']) l2 end
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m', d: M
l: list M
Hwit1: last (x :: d :: l) = Some m
Hwit2: x ∈ eval ρ base
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m
Hwit: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end

Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (d, x2) :: zip (l ++ [m']) l2 end
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
l: list M
Hwit2: x ∈ eval ρ base
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

βˆ€ d : M, last (x :: d :: l) = Some m β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (d, x2) :: zip (l ++ [m']) l2 end
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
Hwit2: x ∈ eval ρ base
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

βˆ€ d : M, last [x; d] = Some m β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) [] β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match [] ++ [m'] with | [] => [] | x2 :: l2 => (d, x2) :: zip ([] ++ [m']) l2 end
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m', a: M
l: list M
Hwit2: x ∈ eval ρ base
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m
IHl: βˆ€ d : M, last (x :: d :: l) = Some m β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (d, x2) :: zip (l ++ [m']) l2 end
βˆ€ d : M, last (x :: d :: a :: l) = Some m β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) ((d, a) :: zip (a :: l) l) β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match (a :: l) ++ [m'] with | [] => [] | x2 :: l2 => (d, x2) :: zip ((a :: l) ++ [m']) l2 end
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
Hwit2: x ∈ eval ρ base
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

βˆ€ d : M, last [x; d] = Some m β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) [] β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match [] ++ [m'] with | [] => [] | x2 :: l2 => (d, x2) :: zip ([] ++ [m']) l2 end
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
Hwit2: x ∈ eval ρ base
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m
D: M
Hm: last [x; D] = Some m

Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match [] ++ [m'] with | [] => [] | x2 :: l2 => (D, x2) :: zip ([] ++ [m']) l2 end
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
Hwit2: x ∈ eval ρ base
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m
D: M
Hm: last [x; D] = Some m

Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) [(D, m')]
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
Hwit2: x ∈ eval ρ base
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m
D: M
Hm: Some D = Some m

Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) [(D, m')]
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
Hwit2: x ∈ eval ρ base
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m
D: M
Hm: Some D = Some m
H0: D = m

Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) [(m, m')]
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
Hwit2: x ∈ eval ρ base
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m
Hm: Some m = Some m

Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) [(m, m')]
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
Hwit2: x ∈ eval ρ base
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) [(m, m')]
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
Hwit2: x ∈ eval ρ base
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

m' ∈ app_ext (eval ρ step) {[m]} ∧ Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
Hwit2: x ∈ eval ρ base
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

m' ∈ app_ext (eval ρ step) {[m]}
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
Hwit2: x ∈ eval ρ base
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m
Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
Hwit2: x ∈ eval ρ base
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
Hwit2: x ∈ eval ρ base
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

True
exact I.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
Hwit2: x ∈ eval ρ base
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

m' ∈ app_ext (eval ρ step) {[m]}
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
Hwit2: x ∈ eval ρ base
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

βˆƒ re : M, step' ∈ eval ρ step ∧ re ∈ {[m]} ∧ m' ∈ app_interp M step' re
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
Hwit2: x ∈ eval ρ base
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

step' ∈ eval ρ step ∧ m ∈ {[m]} ∧ m' ∈ app_interp M step' m
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
Hwit2: x ∈ eval ρ base
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

step' ∈ eval ρ step
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
Hwit2: x ∈ eval ρ base
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m
m ∈ {[m]} ∧ m' ∈ app_interp M step' m
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
Hwit2: x ∈ eval ρ base
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

step' ∈ eval ρ step
apply Hstep'.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
Hwit2: x ∈ eval ρ base
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

m ∈ {[m]} ∧ m' ∈ app_interp M step' m
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
Hwit2: x ∈ eval ρ base
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

m ∈ {[m]}
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
Hwit2: x ∈ eval ρ base
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m
m' ∈ app_interp M step' m
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
Hwit2: x ∈ eval ρ base
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

m ∈ {[m]}
constructor.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
Hwit2: x ∈ eval ρ base
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m

m' ∈ app_interp M step' m
apply Hm'.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m', a: M
l: list M
Hwit2: x ∈ eval ρ base
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m
IHl: βˆ€ d : M, last (x :: d :: l) = Some m β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (d, x2) :: zip (l ++ [m']) l2 end

βˆ€ d : M, last (x :: d :: a :: l) = Some m β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) ((d, a) :: zip (a :: l) l) β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match (a :: l) ++ [m'] with | [] => [] | x2 :: l2 => (d, x2) :: zip ((a :: l) ++ [m']) l2 end
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m', a: M
l: list M
Hwit2: x ∈ eval ρ base
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m
IHl: βˆ€ d : M, last (x :: d :: l) = Some m β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (d, x2) :: zip (l ++ [m']) l2 end
d: M
Hlast: last (x :: d :: a :: l) = Some m
Hwit: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) ((d, a) :: zip (a :: l) l)

Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match (a :: l) ++ [m'] with | [] => [] | x2 :: l2 => (d, x2) :: zip ((a :: l) ++ [m']) l2 end
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m', a: M
l: list M
Hwit2: x ∈ eval ρ base
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m
IHl: βˆ€ d : M, last (x :: d :: l) = Some m β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (d, x2) :: zip (l ++ [m']) l2 end
d: M
Hlast: last (x :: d :: a :: l) = Some m
Hwit: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) ((d, a) :: zip (a :: l) l)

Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) ((d, a) :: match l ++ [m'] with | [] => [] | x2 :: l2 => (a, x2) :: zip (l ++ [m']) l2 end)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m', a: M
l: list M
Hwit2: x ∈ eval ρ base
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m
IHl: βˆ€ d : M, last (x :: d :: l) = Some m β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (d, x2) :: zip (l ++ [m']) l2 end
d: M
Hlast: last (x :: d :: a :: l) = Some m
Hwit: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) ((d, a) :: zip (a :: l) l)
x0: (M * M)%type
l0: list (M * M)
H1: a ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l with | [] => [] | x2 :: l2 => (a, x2) :: zip l l2 end
H: x0 = (d, a)
H0: l0 = match l with | [] => [] | x2 :: l2 => (a, x2) :: zip l l2 end

Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) ((d, a) :: match l ++ [m'] with | [] => [] | x2 :: l2 => (a, x2) :: zip (l ++ [m']) l2 end)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m', a: M
l: list M
Hwit2: x ∈ eval ρ base
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m
IHl: βˆ€ d : M, last (x :: d :: l) = Some m β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (d, x2) :: zip (l ++ [m']) l2 end
d: M
Hlast: last (x :: d :: a :: l) = Some m
Hwit: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) ((d, a) :: zip (a :: l) l)
H1: a ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l with | [] => [] | x2 :: l2 => (a, x2) :: zip l l2 end

Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) ((d, a) :: match l ++ [m'] with | [] => [] | x2 :: l2 => (a, x2) :: zip (l ++ [m']) l2 end)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m', a: M
l: list M
Hwit2: x ∈ eval ρ base
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m
IHl: βˆ€ d : M, last (x :: d :: l) = Some m β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (d, x2) :: zip (l ++ [m']) l2 end
d: M
Hlast: last (x :: d :: a :: l) = Some m
Hwit: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) ((d, a) :: zip (a :: l) l)
H1: a ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l with | [] => [] | x2 :: l2 => (a, x2) :: zip l l2 end

a ∈ app_ext (eval ρ step) {[d]} ∧ Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (a, x2) :: zip (l ++ [m']) l2 end
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m', a: M
l: list M
Hwit2: x ∈ eval ρ base
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m
IHl: βˆ€ d : M, last (x :: d :: l) = Some m β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (d, x2) :: zip (l ++ [m']) l2 end
d: M
Hlast: last (x :: d :: a :: l) = Some m
Hwit: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) ((d, a) :: zip (a :: l) l)
H1: a ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l with | [] => [] | x2 :: l2 => (a, x2) :: zip l l2 end

a ∈ app_ext (eval ρ step) {[d]}
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m', a: M
l: list M
Hwit2: x ∈ eval ρ base
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m
IHl: βˆ€ d : M, last (x :: d :: l) = Some m β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (d, x2) :: zip (l ++ [m']) l2 end
d: M
Hlast: last (x :: d :: a :: l) = Some m
Hwit: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) ((d, a) :: zip (a :: l) l)
H1: a ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l with | [] => [] | x2 :: l2 => (a, x2) :: zip l l2 end
Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (a, x2) :: zip (l ++ [m']) l2 end
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m', a: M
l: list M
Hwit2: x ∈ eval ρ base
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m
IHl: βˆ€ d : M, last (x :: d :: l) = Some m β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (d, x2) :: zip (l ++ [m']) l2 end
d: M
Hlast: last (x :: d :: a :: l) = Some m
Hwit: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) ((d, a) :: zip (a :: l) l)
H1: a ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l with | [] => [] | x2 :: l2 => (a, x2) :: zip l l2 end

a ∈ app_ext (eval ρ step) {[d]}
apply H1.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m', a: M
l: list M
Hwit2: x ∈ eval ρ base
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m
IHl: βˆ€ d : M, last (x :: d :: l) = Some m β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (d, x2) :: zip (l ++ [m']) l2 end
d: M
Hlast: last (x :: d :: a :: l) = Some m
Hwit: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) ((d, a) :: zip (a :: l) l)
H1: a ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l with | [] => [] | x2 :: l2 => (a, x2) :: zip l l2 end

Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (a, x2) :: zip (l ++ [m']) l2 end
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m', a: M
l: list M
Hwit2: x ∈ eval ρ base
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m
IHl: βˆ€ d : M, last (x :: d :: l) = Some m β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (d, x2) :: zip (l ++ [m']) l2 end
d: M
Hlast: last (x :: d :: a :: l) = Some m
Hwit: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) ((d, a) :: zip (a :: l) l)
H1: a ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l with | [] => [] | x2 :: l2 => (a, x2) :: zip l l2 end

last (x :: a :: l) = Some m
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m', a: M
l: list M
Hwit2: x ∈ eval ρ base
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m
IHl: βˆ€ d : M, last (x :: d :: l) = Some m β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (d, x2) :: zip (l ++ [m']) l2 end
d: M
Hlast: last (x :: d :: a :: l) = Some m
Hwit: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) ((d, a) :: zip (a :: l) l)
H1: a ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l with | [] => [] | x2 :: l2 => (a, x2) :: zip l l2 end
Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l with | [] => [] | x2 :: l2 => (a, x2) :: zip l l2 end
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m', a: M
l: list M
Hwit2: x ∈ eval ρ base
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m
IHl: βˆ€ d : M, last (x :: d :: l) = Some m β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (d, x2) :: zip (l ++ [m']) l2 end
d: M
Hlast: last (a :: l) = Some m
Hwit: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) ((d, a) :: zip (a :: l) l)
H1: a ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l with | [] => [] | x2 :: l2 => (a, x2) :: zip l l2 end

last (x :: a :: l) = Some m
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m', a: M
l: list M
Hwit2: x ∈ eval ρ base
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m
IHl: βˆ€ d : M, last (x :: d :: l) = Some m β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (d, x2) :: zip (l ++ [m']) l2 end
d: M
Hlast: last (x :: d :: a :: l) = Some m
Hwit: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) ((d, a) :: zip (a :: l) l)
H1: a ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l with | [] => [] | x2 :: l2 => (a, x2) :: zip l l2 end
Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l with | [] => [] | x2 :: l2 => (a, x2) :: zip l l2 end
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m', a: M
l: list M
Hwit2: x ∈ eval ρ base
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m
IHl: βˆ€ d : M, last (x :: d :: l) = Some m β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (d, x2) :: zip (l ++ [m']) l2 end
d: M
Hlast: last (a :: l) = Some m
Hwit: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) ((d, a) :: zip (a :: l) l)
H1: a ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l with | [] => [] | x2 :: l2 => (a, x2) :: zip l l2 end

last (a :: l) = Some m
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m', a: M
l: list M
Hwit2: x ∈ eval ρ base
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m
IHl: βˆ€ d : M, last (x :: d :: l) = Some m β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (d, x2) :: zip (l ++ [m']) l2 end
d: M
Hlast: last (x :: d :: a :: l) = Some m
Hwit: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) ((d, a) :: zip (a :: l) l)
H1: a ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l with | [] => [] | x2 :: l2 => (a, x2) :: zip l l2 end
Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l with | [] => [] | x2 :: l2 => (a, x2) :: zip l l2 end
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m', a: M
l: list M
Hwit2: x ∈ eval ρ base
step': M
Hstep': step' ∈ eval ρ step
Hm': m' ∈ app_interp M step' m
IHl: βˆ€ d : M, last (x :: d :: l) = Some m β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l with | [] => [] | x2 :: l2 => (d, x2) :: zip l l2 end β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (d, x2) :: zip (l ++ [m']) l2 end
d: M
Hlast: last (x :: d :: a :: l) = Some m
Hwit: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) ((d, a) :: zip (a :: l) l)
H1: a ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l with | [] => [] | x2 :: l2 => (a, x2) :: zip l l2 end

Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l with | [] => [] | x2 :: l2 => (a, x2) :: zip l l2 end
apply H2.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
l: list M

last (x :: l) = Some m ∧ is_witnessing_sequence_old m' ((x :: l) ++ [m']) β†’ is_witnessing_sequence_old m (x :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
l: list M
Hlast: last (x :: l) = Some m
H: is_witnessing_sequence_old m' ((x :: l) ++ [m'])

is_witnessing_sequence_old m (x :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
l: list M
Hlast: last (x :: l) = Some m
H: is_witnessing_sequence_old m' ((x :: l) ++ [m'])

is_witnessing_sequence_old m (x :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
l: list M
Hlast: last (x :: l) = Some m
H: match (x :: l) ++ [m'] with | [] => False | mβ‚€ :: ms => mβ‚€ ∈ eval ρ base ∧ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (mβ‚€ :: ms) ms) end

is_witnessing_sequence_old m (x :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
l: list M
Hlast: last (x :: l) = Some m
H: match (x :: l) ++ [m'] with | [] => False | mβ‚€ :: ms => mβ‚€ ∈ eval ρ base ∧ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (mβ‚€ :: ms) ms) end
len: nat
Heqlen: len = length l

is_witnessing_sequence_old m (x :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
l: list M
Hlast: last (x :: l) = Some m
H: match (x :: l) ++ [m'] with | [] => False | mβ‚€ :: ms => mβ‚€ ∈ eval ρ base ∧ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (mβ‚€ :: ms) ms) end
len: nat
Heqlen: len = length l

length l ≀ len
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
l: list M
Hlast: last (x :: l) = Some m
H: match (x :: l) ++ [m'] with | [] => False | mβ‚€ :: ms => mβ‚€ ∈ eval ρ base ∧ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (mβ‚€ :: ms) ms) end
len: nat
Heqlen: len = length l
Hlen: length l ≀ len
is_witnessing_sequence_old m (x :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
l: list M
Hlast: last (x :: l) = Some m
H: match (x :: l) ++ [m'] with | [] => False | mβ‚€ :: ms => mβ‚€ ∈ eval ρ base ∧ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (mβ‚€ :: ms) ms) end
len: nat
Heqlen: len = length l

length l ≀ len
lia.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
l: list M
Hlast: last (x :: l) = Some m
H: match (x :: l) ++ [m'] with | [] => False | mβ‚€ :: ms => mβ‚€ ∈ eval ρ base ∧ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (mβ‚€ :: ms) ms) end
len: nat
Heqlen: len = length l
Hlen: length l ≀ len

is_witnessing_sequence_old m (x :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
l: list M
Hlast: last (x :: l) = Some m
H: match (x :: l) ++ [m'] with | [] => False | mβ‚€ :: ms => mβ‚€ ∈ eval ρ base ∧ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (mβ‚€ :: ms) ms) end
len: nat
Hlen: length l ≀ len

is_witnessing_sequence_old m (x :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
l: list M
Hlast: last (x :: l) = Some m
H: x ∈ eval ρ base ∧ Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end
len: nat
Hlen: length l ≀ len

is_witnessing_sequence_old m (x :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
l: list M
Hlast: last (x :: l) = Some m
Hbase: x ∈ eval ρ base
Hall: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end
len: nat
Hlen: length l ≀ len

is_witnessing_sequence_old m (x :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
l: list M
Hlast: last (x :: l) = Some m
Hbase: x ∈ eval ρ base
Hall: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end
len: nat
Hlen: length l ≀ len

is_witnessing_sequence_old m (x :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
l: list M
Hlast: last (x :: l) = Some m
Hbase: x ∈ eval ρ base
Hall: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end
len: nat
Hlen: length l ≀ len

last (x :: l) = Some m ∧ (x ∈ eval ρ base ∧ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l)) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
l: list M
Hlast: last (x :: l) = Some m
Hbase: x ∈ eval ρ base
Hall: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end
len: nat
Hlen: length l ≀ len

last (x :: l) = Some m
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
l: list M
Hlast: last (x :: l) = Some m
Hbase: x ∈ eval ρ base
Hall: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end
len: nat
Hlen: length l ≀ len
(x ∈ eval ρ base ∧ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l)) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
l: list M
Hlast: last (x :: l) = Some m
Hbase: x ∈ eval ρ base
Hall: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end
len: nat
Hlen: length l ≀ len

last (x :: l) = Some m
apply Hlast.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
l: list M
Hlast: last (x :: l) = Some m
Hbase: x ∈ eval ρ base
Hall: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end
len: nat
Hlen: length l ≀ len

(x ∈ eval ρ base ∧ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l)) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
l: list M
Hlast: last (x :: l) = Some m
Hbase: x ∈ eval ρ base
Hall: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end
len: nat
Hlen: length l ≀ len

x ∈ eval ρ base ∧ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
l: list M
Hlast: last (x :: l) = Some m
Hbase: x ∈ eval ρ base
Hall: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end
len: nat
Hlen: length l ≀ len

x ∈ eval ρ base
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
l: list M
Hlast: last (x :: l) = Some m
Hbase: x ∈ eval ρ base
Hall: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end
len: nat
Hlen: length l ≀ len
Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
l: list M
Hlast: last (x :: l) = Some m
Hbase: x ∈ eval ρ base
Hall: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end
len: nat
Hlen: length l ≀ len

x ∈ eval ρ base
apply Hbase.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
l: list M
Hlast: last (x :: l) = Some m
Hbase: x ∈ eval ρ base
Hall: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end
len: nat
Hlen: length l ≀ len

Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, x, m': M
l: list M
Hlast: last (x :: l) = Some m
Hall: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end
len: nat
Hlen: length l ≀ len

Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
len: nat

βˆ€ (x : M) (l : list M), last (x :: l) = Some m β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end β†’ length l ≀ len β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M

βˆ€ (x : M) (l : list M), last (x :: l) = Some m β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end β†’ length l ≀ 0 β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
len: nat
IHlen: βˆ€ (x : M) (l : list M), last (x :: l) = Some m β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end β†’ length l ≀ len β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
βˆ€ (x : M) (l : list M), last (x :: l) = Some m β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end β†’ length l ≀ S len β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M

βˆ€ (x : M) (l : list M), last (x :: l) = Some m β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end β†’ length l ≀ 0 β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m', x: M
l: list M
Hlast: last (x :: l) = Some m
Hall: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end
Hlen: length l ≀ 0

Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m', x: M
Hlast: last [x] = Some m
Hall: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match [] ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip ([] ++ [m']) l2 end
Hlen: length [] ≀ 0

Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [x] []) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m', x, d: M
l: list M
Hlast: last (x :: d :: l) = Some m
Hall: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match (d :: l) ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip ((d :: l) ++ [m']) l2 end
Hlen: length (d :: l) ≀ 0
Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: d :: l) (d :: l)) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m', x, d: M
l: list M
Hlast: last (x :: d :: l) = Some m
Hall: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match (d :: l) ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip ((d :: l) ++ [m']) l2 end
Hlen: length (d :: l) ≀ 0

Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: d :: l) (d :: l)) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m', x, d: M
l: list M
Hlast: last (x :: d :: l) = Some m
Hall: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match (d :: l) ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip ((d :: l) ++ [m']) l2 end
Hlen: S (length l) ≀ 0

Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: d :: l) (d :: l)) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
lia.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m', x: M
Hlast: last [x] = Some m
Hall: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match [] ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip ([] ++ [m']) l2 end
Hlen: length [] ≀ 0

Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [x] []) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m', x: M
Hlast: last [x] = Some m
Hall: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match [] ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip ([] ++ [m']) l2 end
Hlen: length [] ≀ 0

Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) [] ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m', x: M
Hlast: last [x] = Some m
Hall: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) [(x, m')]
Hlen: length [] ≀ 0

Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) [] ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m', x: M
Hlast: last [x] = Some m
Hall: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) [(x, m')]
Hlen: length [] ≀ 0

Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m', x: M
Hlast: last [x] = Some m
Hall: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) [(x, m')]
Hlen: length [] ≀ 0
βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m', x: M
Hlast: last [x] = Some m
Hall: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) [(x, m')]
Hlen: length [] ≀ 0

Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m', x: M
Hlast: last [x] = Some m
Hall: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) [(x, m')]
Hlen: length [] ≀ 0

True
exact I.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m', x: M
Hlast: last [x] = Some m
Hall: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) [(x, m')]
Hlen: length [] ≀ 0

βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m', x: M
Hlast: last [x] = Some m
Hall: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) [(x, m')]
Hlen: length [] ≀ 0
x0: (M * M)%type
l: list (M * M)
H1: m' ∈ app_ext (eval ρ step) {[x]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []
H: x0 = (x, m')
H0: l = []

βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m', x: M
Hlast: last [x] = Some m
Hall: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) [(x, m')]
Hlen: length [] ≀ 0
H1: m' ∈ app_ext (eval ρ step) {[x]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []

βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m', x: M
Hlast: last [x] = Some m
Hlen: length [] ≀ 0
H1: m' ∈ app_ext (eval ρ step) {[x]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []

βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m', x: M
Hlast: last [x] = Some m
Hlen: length [] ≀ 0
H1: m' ∈ app_ext (eval ρ step) {[x]}

βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m', x: M
Hlast: last [x] = Some m
Hlen: length [] ≀ 0
step', m'': M
Hstep': step' ∈ eval ρ step
Hm'm'': m'' ∈ {[x]}
Hstep'm'': m' ∈ app_interp M step' m''

βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m', x: M
Hlast: last [x] = Some m
Hlen: length [] ≀ 0
step', m'': M
Hstep': step' ∈ eval ρ step
Hm'm'': m'' ∈ {[x]}
Hstep'm'': m' ∈ app_interp M step' m''
H: x = m''

βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m', m'': M
Hlast: last [m''] = Some m
Hlen: length [] ≀ 0
step': M
Hstep': step' ∈ eval ρ step
Hm'm'': m'' ∈ {[m'']}
Hstep'm'': m' ∈ app_interp M step' m''

βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m', m'': M
Hlast: last [m''] = Some m
Hlen: length [] ≀ 0
step': M
Hstep': step' ∈ eval ρ step
Hstep'm'': m' ∈ app_interp M step' m''

βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m', m'': M
Hlast: last [m''] = Some m
Hlen: length [] ≀ 0
step': M
Hstep': step' ∈ eval ρ step
Hstep'm'': m' ∈ app_interp M step' m''

step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m', m'': M
Hlast: last [m''] = Some m
Hlen: length [] ≀ 0
step': M
Hstep': step' ∈ eval ρ step
Hstep'm'': m' ∈ app_interp M step' m''

step' ∈ eval ρ step
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m', m'': M
Hlast: last [m''] = Some m
Hlen: length [] ≀ 0
step': M
Hstep': step' ∈ eval ρ step
Hstep'm'': m' ∈ app_interp M step' m''
m' ∈ app_interp M step' m
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m', m'': M
Hlast: last [m''] = Some m
Hlen: length [] ≀ 0
step': M
Hstep': step' ∈ eval ρ step
Hstep'm'': m' ∈ app_interp M step' m''

m' ∈ app_interp M step' m
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m', m'': M
Hlast: Some m'' = Some m
Hlen: length [] ≀ 0
step': M
Hstep': step' ∈ eval ρ step
Hstep'm'': m' ∈ app_interp M step' m''

m' ∈ app_interp M step' m
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m', m'': M
Hlast: Some m'' = Some m
Hlen: length [] ≀ 0
step': M
Hstep': step' ∈ eval ρ step
Hstep'm'': m' ∈ app_interp M step' m''
H0: m'' = m

m' ∈ app_interp M step' m
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
Hlast: Some m = Some m
Hlen: length [] ≀ 0
step': M
Hstep': step' ∈ eval ρ step
Hstep'm'': m' ∈ app_interp M step' m

m' ∈ app_interp M step' m
apply Hstep'm''.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
len: nat
IHlen: βˆ€ (x : M) (l : list M), last (x :: l) = Some m β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end β†’ length l ≀ len β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)

βˆ€ (x : M) (l : list M), last (x :: l) = Some m β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end β†’ length l ≀ S len β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
len: nat
IHlen: βˆ€ (x : M) (l : list M), last (x :: l) = Some m β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end β†’ length l ≀ len β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
x: M
l: list M
Hlast: last (x :: l) = Some m
Hall: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end
Hlen: length l ≀ S len

Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
len: nat
IHlen: βˆ€ (x : M) (l : list M), last (x :: l) = Some m β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end β†’ length l ≀ len β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
x: M
Hlast: last [x] = Some m
Hall: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match [] ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip ([] ++ [m']) l2 end
Hlen: length [] ≀ S len

Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [x] []) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
len: nat
IHlen: βˆ€ (x : M) (l : list M), last (x :: l) = Some m β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end β†’ length l ≀ len β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
x, x': M
l': list M
Hlast: last (x :: x' :: l') = Some m
Hall: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match (x' :: l') ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip ((x' :: l') ++ [m']) l2 end
Hlen: length (x' :: l') ≀ S len
Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: x' :: l') (x' :: l')) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
len: nat
IHlen: βˆ€ (x : M) (l : list M), last (x :: l) = Some m β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end β†’ length l ≀ len β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
x: M
Hlast: last [x] = Some m
Hall: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match [] ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip ([] ++ [m']) l2 end
Hlen: length [] ≀ S len

Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [x] []) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
len: nat
IHlen: βˆ€ (x : M) (l : list M), last (x :: l) = Some m β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end β†’ length l ≀ len β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
x: M
Hlast: Some x = Some m
Hall: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match [] ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip ([] ++ [m']) l2 end
Hlen: length [] ≀ S len

Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [x] []) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
len: nat
IHlen: βˆ€ (x : M) (l : list M), last (x :: l) = Some m β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end β†’ length l ≀ len β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
x: M
Hlast: Some x = Some m
Hall: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match [] ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip ([] ++ [m']) l2 end
Hlen: length [] ≀ S len
H0: x = m

Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [m] []) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
len: nat
IHlen: βˆ€ (x : M) (l : list M), last (x :: l) = Some m β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end β†’ length l ≀ len β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
x: M
Hall: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match [] ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip ([] ++ [m']) l2 end
Hlen: length [] ≀ S len
H0: x = m

Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [m] []) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
len: nat
IHlen: βˆ€ (x : M) (l : list M), last (x :: l) = Some m β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end β†’ length l ≀ len β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Hall: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match [] ++ [m'] with | [] => [] | x2 :: l2 => (m, x2) :: zip ([] ++ [m']) l2 end
Hlen: length [] ≀ S len

Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [m] []) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
len: nat
IHlen: βˆ€ (x : M) (l : list M), last (x :: l) = Some m β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end β†’ length l ≀ len β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Hall: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) [(m, m')]
Hlen: length [] ≀ S len

Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [m] []) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
len: nat
IHlen: βˆ€ (x : M) (l : list M), last (x :: l) = Some m β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end β†’ length l ≀ len β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Hall: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) [(m, m')]
Hlen: length [] ≀ S len
x: (M * M)%type
l: list (M * M)
H1: m' ∈ app_ext (eval ρ step) {[m]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []
H: x = (m, m')
H0: l = []

Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [m] []) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
len: nat
IHlen: βˆ€ (x : M) (l : list M), last (x :: l) = Some m β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end β†’ length l ≀ len β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Hall: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) [(m, m')]
Hlen: length [] ≀ S len
H1: m' ∈ app_ext (eval ρ step) {[m]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []

Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [m] []) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
len: nat
IHlen: βˆ€ (x : M) (l : list M), last (x :: l) = Some m β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end β†’ length l ≀ len β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Hlen: length [] ≀ S len
H1: m' ∈ app_ext (eval ρ step) {[m]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []

Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [m] []) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
len: nat
IHlen: βˆ€ (x : M) (l : list M), last (x :: l) = Some m β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end β†’ length l ≀ len β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Hlen: length [] ≀ S len
H1: m' ∈ app_ext (eval ρ step) {[m]}

Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [m] []) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
len: nat
IHlen: βˆ€ (x : M) (l : list M), last (x :: l) = Some m β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end β†’ length l ≀ len β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Hlen: length [] ≀ S len
H1: m' ∈ app_ext (eval ρ step) {[m]}

Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) [] ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
len: nat
IHlen: βˆ€ (x : M) (l : list M), last (x :: l) = Some m β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end β†’ length l ≀ len β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Hlen: length [] ≀ S len
H1: m' ∈ app_ext (eval ρ step) {[m]}

Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
len: nat
IHlen: βˆ€ (x : M) (l : list M), last (x :: l) = Some m β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end β†’ length l ≀ len β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Hlen: length [] ≀ S len
H1: m' ∈ app_ext (eval ρ step) {[m]}
βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
len: nat
IHlen: βˆ€ (x : M) (l : list M), last (x :: l) = Some m β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end β†’ length l ≀ len β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Hlen: length [] ≀ S len
H1: m' ∈ app_ext (eval ρ step) {[m]}

Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
len: nat
IHlen: βˆ€ (x : M) (l : list M), last (x :: l) = Some m β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end β†’ length l ≀ len β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Hlen: length [] ≀ S len
H1: m' ∈ app_ext (eval ρ step) {[m]}

True
exact I.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
len: nat
IHlen: βˆ€ (x : M) (l : list M), last (x :: l) = Some m β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end β†’ length l ≀ len β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Hlen: length [] ≀ S len
H1: m' ∈ app_ext (eval ρ step) {[m]}

βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
len: nat
IHlen: βˆ€ (x : M) (l : list M), last (x :: l) = Some m β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end β†’ length l ≀ len β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Hlen: length [] ≀ S len
step': M
Hstep': βˆƒ re : M, step' ∈ eval ρ step ∧ re ∈ {[m]} ∧ m' ∈ app_interp M step' re

βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
len: nat
IHlen: βˆ€ (x : M) (l : list M), last (x :: l) = Some m β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end β†’ length l ≀ len β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Hlen: length [] ≀ S len
step': M
Hstep': βˆƒ re : M, step' ∈ eval ρ step ∧ re ∈ {[m]} ∧ m' ∈ app_interp M step' re

step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
len: nat
IHlen: βˆ€ (x : M) (l : list M), last (x :: l) = Some m β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end β†’ length l ≀ len β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Hlen: length [] ≀ S len
step', m'': M
Hstep': step' ∈ eval ρ step
Hmm'': m'' ∈ {[m]}
Hm'': m' ∈ app_interp M step' m''

step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
len: nat
IHlen: βˆ€ (x : M) (l : list M), last (x :: l) = Some m β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end β†’ length l ≀ len β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Hlen: length [] ≀ S len
step', m'': M
Hstep': step' ∈ eval ρ step
Hmm'': m'' ∈ {[m]}
Hm'': m' ∈ app_interp M step' m''

step' ∈ eval ρ step
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
len: nat
IHlen: βˆ€ (x : M) (l : list M), last (x :: l) = Some m β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end β†’ length l ≀ len β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Hlen: length [] ≀ S len
step', m'': M
Hstep': step' ∈ eval ρ step
Hmm'': m'' ∈ {[m]}
Hm'': m' ∈ app_interp M step' m''
m' ∈ app_interp M step' m
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
len: nat
IHlen: βˆ€ (x : M) (l : list M), last (x :: l) = Some m β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end β†’ length l ≀ len β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Hlen: length [] ≀ S len
step', m'': M
Hstep': step' ∈ eval ρ step
Hmm'': m'' ∈ {[m]}
Hm'': m' ∈ app_interp M step' m''

step' ∈ eval ρ step
apply Hstep'.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
len: nat
IHlen: βˆ€ (x : M) (l : list M), last (x :: l) = Some m β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end β†’ length l ≀ len β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Hlen: length [] ≀ S len
step', m'': M
Hstep': step' ∈ eval ρ step
Hmm'': m'' ∈ {[m]}
Hm'': m' ∈ app_interp M step' m''

m' ∈ app_interp M step' m
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
len: nat
IHlen: βˆ€ (x : M) (l : list M), last (x :: l) = Some m β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end β†’ length l ≀ len β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Hlen: length [] ≀ S len
step', m'': M
Hstep': step' ∈ eval ρ step
Hmm'': m'' ∈ {[m]}
Hm'': m' ∈ app_interp M step' m''
H: m = m''

m' ∈ app_interp M step' m''
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m': M
len: nat
m'': M
IHlen: βˆ€ (x : M) (l : list M), last (x :: l) = Some m'' β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end β†’ length l ≀ len β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m'')
Hlen: length [] ≀ S len
step': M
Hstep': step' ∈ eval ρ step
Hmm'': m'' ∈ {[m'']}
Hm'': m' ∈ app_interp M step' m''

m' ∈ app_interp M step' m''
apply Hm''.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
len: nat
IHlen: βˆ€ (x : M) (l : list M), last (x :: l) = Some m β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end β†’ length l ≀ len β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
x, x': M
l': list M
Hlast: last (x :: x' :: l') = Some m
Hall: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match (x' :: l') ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip ((x' :: l') ++ [m']) l2 end
Hlen: length (x' :: l') ≀ S len

Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: x' :: l') (x' :: l')) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
len: nat
IHlen: βˆ€ (x : M) (l : list M), last (x :: l) = Some m β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end β†’ length l ≀ len β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: l) l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
x, x': M
l': list M
Hlast: last (x :: x' :: l') = Some m
Hall: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) ((x, x') :: match l' ++ [m'] with | [] => [] | x2 :: l2 => (x', x2) :: zip (l' ++ [m']) l2 end)
Hlen: length (x' :: l') ≀ S len

Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: x' :: l') (x' :: l')) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
len: nat
IHlen: βˆ€ (x : M) (l : list M), last (x :: l) = Some m β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end β†’ length l ≀ len β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) match l with | [] => [] | x2 :: l2 => (x, x2) :: zip l l2 end ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
x, x': M
l': list M
Hlast: last (x :: x' :: l') = Some m
Hall: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) ((x, x') :: match l' ++ [m'] with | [] => [] | x2 :: l2 => (x', x2) :: zip (l' ++ [m']) l2 end)
Hlen: length (x' :: l') ≀ S len

Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: x' :: l') (x' :: l')) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
len: nat
IHlen: βˆ€ (x : M) (l : list M), last (x :: l) = Some m β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end β†’ length l ≀ len β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) match l with | [] => [] | x2 :: l2 => (x, x2) :: zip l l2 end ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
x, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hall: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) ((x, x') :: match l' ++ [m'] with | [] => [] | x2 :: l2 => (x', x2) :: zip (l' ++ [m']) l2 end)
Hlen: length (x' :: l') ≀ S len

Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: x' :: l') (x' :: l')) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
len: nat
IHlen: βˆ€ (x : M) (l : list M), last (x :: l) = Some m β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end β†’ length l ≀ len β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) match l with | [] => [] | x2 :: l2 => (x, x2) :: zip l l2 end ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
x, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hall: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) ((x, x') :: match l' ++ [m'] with | [] => [] | x2 :: l2 => (x', x2) :: zip (l' ++ [m']) l2 end)
Hlen: length (x' :: l') ≀ S len
x0: (M * M)%type
l: list (M * M)
H1: x' ∈ app_ext (eval ρ step) {[x]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' ++ [m'] with | [] => [] | x2 :: l2 => (x', x2) :: zip (l' ++ [m']) l2 end
H: x0 = (x, x')
H0: l = match l' ++ [m'] with | [] => [] | x2 :: l2 => (x', x2) :: zip (l' ++ [m']) l2 end

Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: x' :: l') (x' :: l')) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
len: nat
IHlen: βˆ€ (x : M) (l : list M), last (x :: l) = Some m β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end β†’ length l ≀ len β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) match l with | [] => [] | x2 :: l2 => (x, x2) :: zip l l2 end ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
x, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hall: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) ((x, x') :: match l' ++ [m'] with | [] => [] | x2 :: l2 => (x', x2) :: zip (l' ++ [m']) l2 end)
Hlen: length (x' :: l') ≀ S len
H1: x' ∈ app_ext (eval ρ step) {[x]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' ++ [m'] with | [] => [] | x2 :: l2 => (x', x2) :: zip (l' ++ [m']) l2 end

Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: x' :: l') (x' :: l')) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
len: nat
IHlen: βˆ€ (x : M) (l : list M), last (x :: l) = Some m β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) match l ++ [m'] with | [] => [] | x2 :: l2 => (x, x2) :: zip (l ++ [m']) l2 end β†’ length l ≀ len β†’ Forall (Ξ» x0 : M * M, let (old, new) := x0 in new ∈ app_ext (eval ρ step) {[old]}) match l with | [] => [] | x2 :: l2 => (x, x2) :: zip l l2 end ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
x, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hlen: length (x' :: l') ≀ S len
H1: x' ∈ app_ext (eval ρ step) {[x]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' ++ [m'] with | [] => [] | x2 :: l2 => (x', x2) :: zip (l' ++ [m']) l2 end

Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: x' :: l') (x' :: l')) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
len: nat
x': M
l': list M
IHlen: length l' ≀ len β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
x: M
Hlast: last (x' :: l') = Some m
Hlen: length (x' :: l') ≀ S len
H1: x' ∈ app_ext (eval ρ step) {[x]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' ++ [m'] with | [] => [] | x2 :: l2 => (x', x2) :: zip (l' ++ [m']) l2 end

Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (x :: x' :: l') (x' :: l')) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
len: nat
x': M
l': list M
IHlen: length l' ≀ len β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
x: M
Hlast: last (x' :: l') = Some m
Hlen: length (x' :: l') ≀ S len
H1: x' ∈ app_ext (eval ρ step) {[x]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' ++ [m'] with | [] => [] | x2 :: l2 => (x', x2) :: zip (l' ++ [m']) l2 end

Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) ((x, x') :: match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
len: nat
x': M
l': list M
IHlen: length l' ≀ len β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
x: M
Hlast: last (x' :: l') = Some m
Hlen: length (x' :: l') ≀ S len
H1: x' ∈ app_ext (eval ρ step) {[x]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' ++ [m'] with | [] => [] | x2 :: l2 => (x', x2) :: zip (l' ++ [m']) l2 end

(x' ∈ app_ext (eval ρ step) {[x]} ∧ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
len: nat
x': M
l': list M
IHlen: length l' ≀ len β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
x: M
Hlast: last (x' :: l') = Some m
Hlen: length (x' :: l') ≀ S len
H1: x' ∈ app_ext (eval ρ step) {[x]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' ++ [m'] with | [] => [] | x2 :: l2 => (x', x2) :: zip (l' ++ [m']) l2 end

x' ∈ app_ext (eval ρ step) {[x]} ∧ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
len: nat
x': M
l': list M
IHlen: length l' ≀ len β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
x: M
Hlast: last (x' :: l') = Some m
Hlen: length (x' :: l') ≀ S len
H1: x' ∈ app_ext (eval ρ step) {[x]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' ++ [m'] with | [] => [] | x2 :: l2 => (x', x2) :: zip (l' ++ [m']) l2 end

x' ∈ app_ext (eval ρ step) {[x]}
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
len: nat
x': M
l': list M
IHlen: length l' ≀ len β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
x: M
Hlast: last (x' :: l') = Some m
Hlen: length (x' :: l') ≀ S len
H1: x' ∈ app_ext (eval ρ step) {[x]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' ++ [m'] with | [] => [] | x2 :: l2 => (x', x2) :: zip (l' ++ [m']) l2 end
Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
len: nat
x': M
l': list M
IHlen: length l' ≀ len β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
x: M
Hlast: last (x' :: l') = Some m
Hlen: length (x' :: l') ≀ S len
H1: x' ∈ app_ext (eval ρ step) {[x]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' ++ [m'] with | [] => [] | x2 :: l2 => (x', x2) :: zip (l' ++ [m']) l2 end

x' ∈ app_ext (eval ρ step) {[x]}
apply H1.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
len: nat
x': M
l': list M
IHlen: length l' ≀ len β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
x: M
Hlast: last (x' :: l') = Some m
Hlen: length (x' :: l') ≀ S len
H1: x' ∈ app_ext (eval ρ step) {[x]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' ++ [m'] with | [] => [] | x2 :: l2 => (x', x2) :: zip (l' ++ [m']) l2 end

Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
len: nat
x': M
l': list M
IHlen: length l' ≀ len β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
x: M
Hlast: last (x' :: l') = Some m
Hlen: length (x' :: l') ≀ S len
H1: x' ∈ app_ext (eval ρ step) {[x]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' ++ [m'] with | [] => [] | x2 :: l2 => (x', x2) :: zip (l' ++ [m']) l2 end

length l' ≀ len
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, m': M
len: nat
x': M
l': list M
IHlen: length l' ≀ len β†’ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m)
x: M
Hlast: last (x' :: l') = Some m
Hlen: S (length l') ≀ S len
H1: x' ∈ app_ext (eval ρ step) {[x]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' ++ [m'] with | [] => [] | x2 :: l2 => (x', x2) :: zip (l' ++ [m']) l2 end

length l' ≀ len
lia. Qed. Definition witnessed_elements_old : propset (Domain M) := PropSet (Ξ» m, βˆƒ l, is_witnessing_sequence_old m l).
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M

F witnessed_elements_old βŠ† witnessed_elements_old
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M

F witnessed_elements_old βŠ† witnessed_elements_old
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M

βˆ€ x : M, x ∈ F witnessed_elements_old β†’ x ∈ witnessed_elements_old
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
Hx: x ∈ F witnessed_elements_old

x ∈ witnessed_elements_old
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
Hx: x ∈ Fassoc ρ patt_ind_gen_body^{svar:0↦ fresh_svar patt_ind_gen_body} (fresh_svar patt_ind_gen_body) witnessed_elements_old

x ∈ witnessed_elements_old
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
Hx: x ∈ eval (update_svar_val (fresh_svar patt_ind_gen_body) witnessed_elements_old ρ) patt_ind_gen_body^{svar:0↦ fresh_svar patt_ind_gen_body}

x ∈ witnessed_elements_old
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
Hx: x ∈ eval (update_svar_val (fresh_svar patt_ind_gen_body) witnessed_elements_old ρ) patt_ind_gen_body^[svar:0↦ patt_free_svar (fresh_svar patt_ind_gen_body)]

x ∈ witnessed_elements_old
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
Hx: x ∈ eval (update_svar_val (fresh_svar patt_ind_gen_body) witnessed_elements_old ρ) (((nest_mu base)^[svar:0↦ patt_free_svar (fresh_svar patt_ind_gen_body)] ---> βŠ₯) ---> (nest_mu step)^[svar:0↦ patt_free_svar (fresh_svar patt_ind_gen_body)] $ patt_free_svar (fresh_svar patt_ind_gen_body))

x ∈ witnessed_elements_old
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
Hx: x ∈ eval (update_svar_val (fresh_svar patt_ind_gen_body) witnessed_elements_old ρ) (nest_mu base)^[svar:0↦ patt_free_svar (fresh_svar patt_ind_gen_body)] βˆͺ eval (update_svar_val (fresh_svar patt_ind_gen_body) witnessed_elements_old ρ) ((nest_mu step)^[svar:0↦ patt_free_svar (fresh_svar patt_ind_gen_body)] $ patt_free_svar (fresh_svar patt_ind_gen_body))

x ∈ witnessed_elements_old
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
Hx: x ∈ eval (update_svar_val (fresh_svar patt_ind_gen_body) witnessed_elements_old ρ) (nest_mu base)^{svar:0↦ fresh_svar patt_ind_gen_body} βˆͺ eval (update_svar_val (fresh_svar patt_ind_gen_body) witnessed_elements_old ρ) ((nest_mu step)^[svar:0↦ patt_free_svar (fresh_svar patt_ind_gen_body)] $ patt_free_svar (fresh_svar patt_ind_gen_body))

x ∈ witnessed_elements_old
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
Hx: x ∈ eval (update_svar_val (fresh_svar patt_ind_gen_body) witnessed_elements_old ρ) (nest_mu base)^{svar:0↦ fresh_svar patt_ind_gen_body} βˆͺ eval (update_svar_val (fresh_svar patt_ind_gen_body) witnessed_elements_old ρ) ((nest_mu step)^{svar:0↦ fresh_svar patt_ind_gen_body} $ patt_free_svar (fresh_svar patt_ind_gen_body))

x ∈ witnessed_elements_old
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
H: x ∈ eval (update_svar_val (fresh_svar patt_ind_gen_body) witnessed_elements_old ρ) (nest_mu base)^{svar:0↦ fresh_svar patt_ind_gen_body}

x ∈ witnessed_elements_old
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
H: x ∈ eval (update_svar_val (fresh_svar patt_ind_gen_body) witnessed_elements_old ρ) ((nest_mu step)^{svar:0↦ fresh_svar patt_ind_gen_body} $ patt_free_svar (fresh_svar patt_ind_gen_body))
x ∈ witnessed_elements_old
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
H: x ∈ eval (update_svar_val (fresh_svar patt_ind_gen_body) witnessed_elements_old ρ) (nest_mu base)^{svar:0↦ fresh_svar patt_ind_gen_body}

x ∈ witnessed_elements_old
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
H: x ∈ eval (update_svar_val (fresh_svar patt_ind_gen_body) witnessed_elements_old ρ) (nest_mu base)^{svar:0↦ fresh_svar patt_ind_gen_body}

x ∈ witnessed_elements_old
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
H: x ∈ eval (update_svar_val (fresh_svar patt_ind_gen_body) witnessed_elements_old ρ) (nest_mu base)^{svar:0↦ fresh_svar patt_ind_gen_body}

x ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ]}
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
H: x ∈ eval (update_svar_val (fresh_svar patt_ind_gen_body) witnessed_elements_old ρ) (nest_mu base)^{svar:0↦ fresh_svar patt_ind_gen_body}

is_witnessing_sequence_old x [x]
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
H: x ∈ eval (update_svar_val (fresh_svar patt_ind_gen_body) witnessed_elements_old ρ) (nest_mu base)^{svar:0↦ fresh_svar patt_ind_gen_body}

last [x] = Some x ∧ x ∈ eval ρ base ∧ Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [x] [])
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
H: x ∈ eval (update_svar_val (fresh_svar patt_ind_gen_body) witnessed_elements_old ρ) (nest_mu base)^{svar:0↦ fresh_svar patt_ind_gen_body}

Some x = Some x ∧ x ∈ eval ρ base ∧ Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
H: x ∈ eval (update_svar_val (fresh_svar patt_ind_gen_body) witnessed_elements_old ρ) (nest_mu base)^{svar:0↦ fresh_svar patt_ind_gen_body}

Some x = Some x
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
H: x ∈ eval (update_svar_val (fresh_svar patt_ind_gen_body) witnessed_elements_old ρ) (nest_mu base)^{svar:0↦ fresh_svar patt_ind_gen_body}
x ∈ eval ρ base ∧ Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
H: x ∈ eval (update_svar_val (fresh_svar patt_ind_gen_body) witnessed_elements_old ρ) (nest_mu base)^{svar:0↦ fresh_svar patt_ind_gen_body}

Some x = Some x
reflexivity.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
H: x ∈ eval (update_svar_val (fresh_svar patt_ind_gen_body) witnessed_elements_old ρ) (nest_mu base)^{svar:0↦ fresh_svar patt_ind_gen_body}

x ∈ eval ρ base ∧ Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
H: x ∈ eval (update_svar_val (fresh_svar patt_ind_gen_body) witnessed_elements_old ρ) (nest_mu base)^{svar:0↦ fresh_svar patt_ind_gen_body}

x ∈ eval ρ base
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
H: x ∈ eval (update_svar_val (fresh_svar patt_ind_gen_body) witnessed_elements_old ρ) (nest_mu base)^{svar:0↦ fresh_svar patt_ind_gen_body}
Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
H: x ∈ eval (update_svar_val (fresh_svar patt_ind_gen_body) witnessed_elements_old ρ) (nest_mu base)^{svar:0↦ fresh_svar patt_ind_gen_body}

Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []
constructor.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
H: x ∈ eval (update_svar_val (fresh_svar patt_ind_gen_body) witnessed_elements_old ρ) (nest_mu base)^{svar:0↦ fresh_svar patt_ind_gen_body}

x ∈ eval ρ base
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M

svar_is_fresh_in (fresh_svar patt_ind_gen_body) (nest_mu base)^{svar:0↦fresh_svar patt_ind_gen_body}
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
H: x ∈ eval ρ (nest_mu base)^{svar:0↦ fresh_svar patt_ind_gen_body}
x ∈ eval ρ base
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M

svar_is_fresh_in (fresh_svar patt_ind_gen_body) (nest_mu base)^{svar:0↦fresh_svar patt_ind_gen_body}
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M

free_svars (nest_mu base)^{svar:0↦fresh_svar patt_ind_gen_body} βŠ† free_svars ?Ο•β‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
svar_is_fresh_in (fresh_svar patt_ind_gen_body) ?Ο•β‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M

svar_is_fresh_in (fresh_svar patt_ind_gen_body) ?Ο•β‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M

svar_is_fresh_in (fresh_svar patt_ind_gen_body) ?Ο•β‚‚
auto.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M

free_svars (nest_mu base)^{svar:0↦fresh_svar patt_ind_gen_body} βŠ† free_svars patt_ind_gen_body
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M

free_svars (nest_mu base)^[svar:0↦patt_free_svar (fresh_svar patt_ind_gen_body)] βŠ† free_svars patt_ind_gen_body
solve_free_svars_inclusion 5.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
H: x ∈ eval ρ (nest_mu base)^{svar:0↦ fresh_svar patt_ind_gen_body}

x ∈ eval ρ base
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
H: x ∈ eval ρ (nest_mu base)^{svar:0↦ fresh_svar patt_ind_gen_body}

x ∈ eval ρ base
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
H: x ∈ eval ρ (nest_mu base)^[svar:0↦ patt_free_svar (fresh_svar patt_ind_gen_body)]

x ∈ eval ρ base
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
H: x ∈ eval ρ base

x ∈ eval ρ base
auto.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
H: x ∈ eval (update_svar_val (fresh_svar patt_ind_gen_body) witnessed_elements_old ρ) ((nest_mu step)^{svar:0↦ fresh_svar patt_ind_gen_body} $ patt_free_svar (fresh_svar patt_ind_gen_body))

x ∈ witnessed_elements_old
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
H: x ∈ eval (update_svar_val (fresh_svar patt_ind_gen_body) witnessed_elements_old ρ) ((nest_mu step)^{svar:0↦ fresh_svar patt_ind_gen_body} $ patt_free_svar (fresh_svar patt_ind_gen_body))

x ∈ witnessed_elements_old
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
H: x ∈ app_ext (eval (update_svar_val (fresh_svar patt_ind_gen_body) witnessed_elements_old ρ) (nest_mu step)^{svar:0↦ fresh_svar patt_ind_gen_body}) (eval (update_svar_val (fresh_svar patt_ind_gen_body) witnessed_elements_old ρ) (patt_free_svar (fresh_svar patt_ind_gen_body)))

x ∈ witnessed_elements_old
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
H: x ∈ app_ext (eval (update_svar_val (fresh_svar patt_ind_gen_body) witnessed_elements_old ρ) (nest_mu step)^{svar:0↦ fresh_svar patt_ind_gen_body}) (svar_valuation (update_svar_val (fresh_svar patt_ind_gen_body) witnessed_elements_old ρ) (fresh_svar patt_ind_gen_body))

x ∈ witnessed_elements_old
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
H: x ∈ app_ext (eval (update_svar_val (fresh_svar patt_ind_gen_body) witnessed_elements_old ρ) (nest_mu step)^{svar:0↦ fresh_svar patt_ind_gen_body}) witnessed_elements_old

x ∈ witnessed_elements_old
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
H: x ∈ {[ e | βˆƒ le re : M, le ∈ eval (update_svar_val (fresh_svar patt_ind_gen_body) witnessed_elements_old ρ) (nest_mu step)^{svar:0↦ fresh_svar patt_ind_gen_body} ∧ re ∈ witnessed_elements_old ∧ e ∈ app_interp M le re ]}

x ∈ witnessed_elements_old
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x, step', m: M
H1: step' ∈ eval (update_svar_val (fresh_svar patt_ind_gen_body) witnessed_elements_old ρ) (nest_mu step)^{svar:0↦ fresh_svar patt_ind_gen_body}
H2: m ∈ witnessed_elements_old
Happ: x ∈ app_interp M step' m

x ∈ witnessed_elements_old
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x, step', m: M
H1: step' ∈ eval (update_svar_val (fresh_svar patt_ind_gen_body) witnessed_elements_old ρ) (nest_mu step)^{svar:0↦ fresh_svar patt_ind_gen_body}
H2: m ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ]}
Happ: x ∈ app_interp M step' m

x ∈ witnessed_elements_old
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x, step', m: M
H1: step' ∈ eval (update_svar_val (fresh_svar patt_ind_gen_body) witnessed_elements_old ρ) (nest_mu step)^{svar:0↦ fresh_svar patt_ind_gen_body}
l: list M
Hl: is_witnessing_sequence_old m l
Happ: x ∈ app_interp M step' m

x ∈ witnessed_elements_old
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x, step', m: M
H1: step' ∈ eval (update_svar_val (fresh_svar patt_ind_gen_body) witnessed_elements_old ρ) (nest_mu step)^{svar:0↦ fresh_svar patt_ind_gen_body}
l: list M
Hl: is_witnessing_sequence_old m l
Happ: x ∈ app_interp M step' m

x ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ]}
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x, step', m: M
H1: step' ∈ eval (update_svar_val (fresh_svar patt_ind_gen_body) witnessed_elements_old ρ) (nest_mu step)^{svar:0↦ fresh_svar patt_ind_gen_body}
l: list M
Hl: is_witnessing_sequence_old m l
Happ: x ∈ app_interp M step' m

is_witnessing_sequence_old x (l ++ [x])
(* `l` is not empty *)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x, step', m: M
H1: step' ∈ eval (update_svar_val (fresh_svar patt_ind_gen_body) witnessed_elements_old ρ) (nest_mu step)^{svar:0↦ fresh_svar patt_ind_gen_body}
l: list M
Heql: l = []
Hl: is_witnessing_sequence_old m []
Happ: x ∈ app_interp M step' m

is_witnessing_sequence_old x ([] ++ [x])
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x, step', m: M
H1: step' ∈ eval (update_svar_val (fresh_svar patt_ind_gen_body) witnessed_elements_old ρ) (nest_mu step)^{svar:0↦ fresh_svar patt_ind_gen_body}
l: list M
mβ‚€: M
l': list M
Heql: l = mβ‚€ :: l'
Hl: is_witnessing_sequence_old m (mβ‚€ :: l')
Happ: x ∈ app_interp M step' m
is_witnessing_sequence_old x ((mβ‚€ :: l') ++ [x])
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x, step', m: M
H1: step' ∈ eval (update_svar_val (fresh_svar patt_ind_gen_body) witnessed_elements_old ρ) (nest_mu step)^{svar:0↦ fresh_svar patt_ind_gen_body}
l: list M
Heql: l = []
Hl: is_witnessing_sequence_old m []
Happ: x ∈ app_interp M step' m

is_witnessing_sequence_old x ([] ++ [x])
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x, step', m: M
H1: step' ∈ eval (update_svar_val (fresh_svar patt_ind_gen_body) witnessed_elements_old ρ) (nest_mu step)^{svar:0↦ fresh_svar patt_ind_gen_body}
l: list M
Heql: l = []
Hl: is_witnessing_sequence_old m []
Happ: x ∈ app_interp M step' m

is_witnessing_sequence_old x ([] ++ [x])
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x, step', m: M
H1: step' ∈ eval (update_svar_val (fresh_svar patt_ind_gen_body) witnessed_elements_old ρ) (nest_mu step)^{svar:0↦ fresh_svar patt_ind_gen_body}
l: list M
Heql: l = []
H: last [] = Some m
H0: False
Happ: x ∈ app_interp M step' m

is_witnessing_sequence_old x ([] ++ [x])
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x, step', m: M
H1: step' ∈ eval (update_svar_val (fresh_svar patt_ind_gen_body) witnessed_elements_old ρ) (nest_mu step)^{svar:0↦ fresh_svar patt_ind_gen_body}
l: list M
Heql: l = []
H: None = Some m
H0: False
Happ: x ∈ app_interp M step' m

is_witnessing_sequence_old x ([] ++ [x])
inversion H.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x, step', m: M
H1: step' ∈ eval (update_svar_val (fresh_svar patt_ind_gen_body) witnessed_elements_old ρ) (nest_mu step)^{svar:0↦ fresh_svar patt_ind_gen_body}
l: list M
mβ‚€: M
l': list M
Heql: l = mβ‚€ :: l'
Hl: is_witnessing_sequence_old m (mβ‚€ :: l')
Happ: x ∈ app_interp M step' m

is_witnessing_sequence_old x ((mβ‚€ :: l') ++ [x])
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x, step', m: M
H1: step' ∈ eval (update_svar_val (fresh_svar patt_ind_gen_body) witnessed_elements_old ρ) (nest_mu step)^[svar:0↦ patt_free_svar (fresh_svar patt_ind_gen_body)]
l: list M
mβ‚€: M
l': list M
Heql: l = mβ‚€ :: l'
Hl: is_witnessing_sequence_old m (mβ‚€ :: l')
Happ: x ∈ app_interp M step' m

is_witnessing_sequence_old x ((mβ‚€ :: l') ++ [x])
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x, step', m: M
l: list M
mβ‚€: M
l': list M
Heql: l = mβ‚€ :: l'
Hl: is_witnessing_sequence_old m (mβ‚€ :: l')
Happ: x ∈ app_interp M step' m
H1: step' ∈ eval (update_svar_val (fresh_svar patt_ind_gen_body) witnessed_elements_old ρ) step

is_witnessing_sequence_old x ((mβ‚€ :: l') ++ [x])
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x, step', m: M
l: list M
mβ‚€: M
l': list M
Heql: l = mβ‚€ :: l'
Hl: is_witnessing_sequence_old m (mβ‚€ :: l')
Happ: x ∈ app_interp M step' m

svar_is_fresh_in (fresh_svar patt_ind_gen_body) step
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x, step', m: M
l: list M
mβ‚€: M
l': list M
Heql: l = mβ‚€ :: l'
Hl: is_witnessing_sequence_old m (mβ‚€ :: l')
Happ: x ∈ app_interp M step' m
H1: step' ∈ eval ρ step
is_witnessing_sequence_old x ((mβ‚€ :: l') ++ [x])
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x, step', m: M
l: list M
mβ‚€: M
l': list M
Heql: l = mβ‚€ :: l'
Hl: is_witnessing_sequence_old m (mβ‚€ :: l')
Happ: x ∈ app_interp M step' m

svar_is_fresh_in (fresh_svar patt_ind_gen_body) step
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x, step', m: M
l: list M
mβ‚€: M
l': list M
Heql: l = mβ‚€ :: l'
Hl: is_witnessing_sequence_old m (mβ‚€ :: l')
Happ: x ∈ app_interp M step' m

free_svars step βŠ† free_svars ?Ο•β‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x, step', m: M
l: list M
mβ‚€: M
l': list M
Heql: l = mβ‚€ :: l'
Hl: is_witnessing_sequence_old m (mβ‚€ :: l')
Happ: x ∈ app_interp M step' m
svar_is_fresh_in (fresh_svar patt_ind_gen_body) ?Ο•β‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x, step', m: M
l: list M
mβ‚€: M
l': list M
Heql: l = mβ‚€ :: l'
Hl: is_witnessing_sequence_old m (mβ‚€ :: l')
Happ: x ∈ app_interp M step' m

svar_is_fresh_in (fresh_svar patt_ind_gen_body) ?Ο•β‚‚
apply set_svar_fresh_is_fresh.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x, step', m: M
l: list M
mβ‚€: M
l': list M
Heql: l = mβ‚€ :: l'
Hl: is_witnessing_sequence_old m (mβ‚€ :: l')
Happ: x ∈ app_interp M step' m

free_svars step βŠ† free_svars patt_ind_gen_body
solve_free_svars_inclusion 2.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x, step', m: M
l: list M
mβ‚€: M
l': list M
Heql: l = mβ‚€ :: l'
Hl: is_witnessing_sequence_old m (mβ‚€ :: l')
Happ: x ∈ app_interp M step' m
H1: step' ∈ eval ρ step

is_witnessing_sequence_old x ((mβ‚€ :: l') ++ [x])
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x, step', m: M
l: list M
mβ‚€: M
l': list M
Heql: l = mβ‚€ :: l'
Hl: is_witnessing_sequence_old m (mβ‚€ :: l')
Happ: x ∈ app_interp M step' m
H1: step' ∈ eval ρ step
P: is_witnessing_sequence_old ?m (?x :: ?l) ∧ (βˆƒ step'0 : M, step'0 ∈ eval ρ step ∧ ?m' ∈ app_interp M step'0 ?m) ↔ last (?x :: ?l) = Some ?m ∧ is_witnessing_sequence_old ?m' ((?x :: ?l) ++ [?m'])

is_witnessing_sequence_old x ((mβ‚€ :: l') ++ [x])
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x, step', m: M
l: list M
mβ‚€: M
l': list M
Heql: l = mβ‚€ :: l'
Hl: is_witnessing_sequence_old m (mβ‚€ :: l')
Happ: x ∈ app_interp M step' m
H1: step' ∈ eval ρ step
P: is_witnessing_sequence_old ?m (?x :: ?l) ∧ (βˆƒ step'0 : M, step'0 ∈ eval ρ step ∧ ?m' ∈ app_interp M step'0 ?m) β†’ last (?x :: ?l) = Some ?m ∧ is_witnessing_sequence_old ?m' ((?x :: ?l) ++ [?m'])

is_witnessing_sequence_old x ((mβ‚€ :: l') ++ [x])
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x, step', m: M
l: list M
mβ‚€: M
l': list M
Heql: l = mβ‚€ :: l'
Hl: is_witnessing_sequence_old m (mβ‚€ :: l')
Happ: x ∈ app_interp M step' m
H1: step' ∈ eval ρ step
P: last (mβ‚€ :: l') = Some m ∧ is_witnessing_sequence_old x ((mβ‚€ :: l') ++ [x])

is_witnessing_sequence_old x ((mβ‚€ :: l') ++ [x])
apply P. Qed.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M

eval ρ patt_ind_gen βŠ† witnessed_elements_old
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M

eval ρ patt_ind_gen βŠ† witnessed_elements_old
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M

well_formed_positive (mu , patt_ind_gen_body)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Fassoc ρ patt_ind_gen_body^{svar:0↦ fresh_svar patt_ind_gen_body} (fresh_svar patt_ind_gen_body) witnessed_elements_old βŠ† witnessed_elements_old
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M

well_formed_positive (mu , patt_ind_gen_body)
apply patt_ind_gen_wfp.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M

Fassoc ρ patt_ind_gen_body^{svar:0↦fresh_svar patt_ind_gen_body} (fresh_svar patt_ind_gen_body) witnessed_elements_old βŠ† witnessed_elements_old
apply witnessed_elements_old_prefixpoint. Qed.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M

let Sfix := eval ρ patt_ind_gen in F Sfix = Sfix
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M

let Sfix := eval ρ patt_ind_gen in F Sfix = Sfix
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M

well_formed_positive (mu , patt_ind_gen_body)
apply patt_ind_gen_wfp. Qed. Definition witnessed_elements_old_of_max_len len : propset (Domain M) := PropSet (Ξ» m, βˆƒ l, is_witnessing_sequence_old m l /\ length l <= len).
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat

witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat

witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M

witnessed_elements_old_of_max_len 1 βŠ† eval ρ patt_ind_gen
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
witnessed_elements_old_of_max_len (S (S len)) βŠ† eval ρ patt_ind_gen
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M

witnessed_elements_old_of_max_len 1 βŠ† eval ρ patt_ind_gen
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M

witnessed_elements_old_of_max_len 1 βŠ† eval ρ patt_ind_gen
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M

m ∈ witnessed_elements_old_of_max_len 1 β†’ m ∈ eval ρ patt_ind_gen
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M

m ∈ witnessed_elements_old_of_max_len 1 β†’ m ∈ F (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M

m ∈ witnessed_elements_old_of_max_len 1 β†’ m ∈ F (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
H: m ∈ witnessed_elements_old_of_max_len 1

m ∈ F (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
H: m ∈ witnessed_elements_old_of_max_len 1

m ∈ F (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
H: m ∈ witnessed_elements_old_of_max_len 1

m ∈ eval ρ base βˆͺ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Hwit: is_witnessing_sequence_old m l
Hlen: length l ≀ 1

m ∈ eval ρ base βˆͺ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Hwit: is_witnessing_sequence_old m l
Hlen: length l ≀ 1

m ∈ eval ρ base βˆͺ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
Hlast: last l = Some m
Hm: match l with | [] => False | mβ‚€ :: ms => mβ‚€ ∈ eval ρ base ∧ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (mβ‚€ :: ms) ms) end
Hlen: length l ≀ 1

m ∈ eval ρ base βˆͺ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
Hlast: last [] = Some m
Hm: False
Hlen: length [] ≀ 1

m ∈ eval ρ base βˆͺ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, d: M
l: list M
Hlast: last (d :: l) = Some m
Hm: d ∈ eval ρ base ∧ Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (d :: l) l)
Hlen: length (d :: l) ≀ 1
m ∈ eval ρ base βˆͺ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
Hlast: last [] = Some m
Hm: False
Hlen: length [] ≀ 1

m ∈ eval ρ base βˆͺ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
Hlast: None = Some m
Hm: False
Hlen: length [] ≀ 1

m ∈ eval ρ base βˆͺ app_ext (eval ρ step) (eval ρ patt_ind_gen)
inversion Hlast.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, d: M
l: list M
Hlast: last (d :: l) = Some m
Hm: d ∈ eval ρ base ∧ Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (d :: l) l)
Hlen: length (d :: l) ≀ 1

m ∈ eval ρ base βˆͺ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, d: M
Hlast: last [d] = Some m
Hm: d ∈ eval ρ base ∧ Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [d] [])
Hlen: length [d] ≀ 1

m ∈ eval ρ base βˆͺ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, d, d0: M
l: list M
Hlast: last (d :: d0 :: l) = Some m
Hm: d ∈ eval ρ base ∧ Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (d :: d0 :: l) (d0 :: l))
Hlen: length (d :: d0 :: l) ≀ 1
m ∈ eval ρ base βˆͺ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, d, d0: M
l: list M
Hlast: last (d :: d0 :: l) = Some m
Hm: d ∈ eval ρ base ∧ Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (d :: d0 :: l) (d0 :: l))
Hlen: length (d :: d0 :: l) ≀ 1

m ∈ eval ρ base βˆͺ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, d, d0: M
l: list M
Hlast: last (d :: d0 :: l) = Some m
Hm: d ∈ eval ρ base ∧ Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (d :: d0 :: l) (d0 :: l))
Hlen: S (S (length l)) ≀ 1

m ∈ eval ρ base βˆͺ app_ext (eval ρ step) (eval ρ patt_ind_gen)
lia.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, d: M
Hlast: last [d] = Some m
Hm: d ∈ eval ρ base ∧ Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [d] [])
Hlen: length [d] ≀ 1

m ∈ eval ρ base βˆͺ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, d: M
Hlast: Some d = Some m
Hm: d ∈ eval ρ base ∧ Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [d] [])
Hlen: length [d] ≀ 1

m ∈ eval ρ base βˆͺ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, d: M
Hlast: Some d = Some m
Hm: d ∈ eval ρ base ∧ Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [d] [])
Hlen: length [d] ≀ 1
H0: d = m

m ∈ eval ρ base βˆͺ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m, d: M
Hm: d ∈ eval ρ base ∧ Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [d] [])
Hlen: length [d] ≀ 1
H0: d = m

m ∈ eval ρ base βˆͺ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
Hlen: length [m] ≀ 1
Hm: m ∈ eval ρ base ∧ Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [m] [])

m ∈ eval ρ base βˆͺ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
Hlen: length [m] ≀ 1
Hm: m ∈ eval ρ base

m ∈ eval ρ base βˆͺ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
Hlen: length [m] ≀ 1
Hm: m ∈ eval ρ base

m ∈ eval ρ base
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
Hlen: length [m] ≀ 1
Hm: m ∈ eval ρ base

m ∈ eval ρ base
apply Hm.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen

witnessed_elements_old_of_max_len (S (S len)) βŠ† eval ρ patt_ind_gen
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen

witnessed_elements_old_of_max_len (S (S len)) βŠ† eval ρ patt_ind_gen
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m: M

m ∈ witnessed_elements_old_of_max_len (S (S len)) β†’ m ∈ eval ρ patt_ind_gen
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m: M

m ∈ witnessed_elements_old_of_max_len (S (S len)) β†’ m ∈ F (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m: M

m ∈ witnessed_elements_old_of_max_len (S (S len)) β†’ m ∈ F (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m: M
H: m ∈ witnessed_elements_old_of_max_len (S (S len))

m ∈ F (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m: M
l: list M
Hwit: is_witnessing_sequence_old m l
Hlen: length l ≀ S (S len)

m ∈ F (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m: M
l: list M
Hwit: is_witnessing_sequence_old m l
Hlen: length l ≀ S (S len)

m ∈ F (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m: M
l: list M
Hwit: is_witnessing_sequence_old m l
Hlen: length l ≀ S (S len)

m ∈ F (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m: M
l: list M
Hwit: is_witnessing_sequence_old m l
Hlen: length l ≀ S (S len)

m ∈ eval ρ base βˆͺ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m: M
l: list M
Hwit: is_witnessing_sequence_old m l
Hlen: length l ≀ S (S len)
Hwit': is_witnessing_sequence_old m l

m ∈ eval ρ base βˆͺ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m: M
l: list M
Hwit: is_witnessing_sequence_old m l
Hlen: length l ≀ S (S len)
Hwit': is_witnessing_sequence_old m l

m ∈ eval ρ base βˆͺ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m: M
l: list M
Hlast: last l = Some m
Hl: match l with | [] => False | mβ‚€ :: ms => mβ‚€ ∈ eval ρ base ∧ Forall (Ξ» x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (mβ‚€ :: ms) ms) end
Hlen: length l ≀ S (S len)
Hwit': is_witnessing_sequence_old m l

m ∈ eval ρ base βˆͺ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m: M
Hlast: last [] = Some m
Hl: False
Hlen: length [] ≀ S (S len)
Hwit': is_witnessing_sequence_old m []

m ∈ eval ρ base βˆͺ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d: M
l: list M
Hlast: last (d :: l) = Some m
Hl: d ∈ eval ρ base ∧ Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (d :: l) l)
Hlen: length (d :: l) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: l)
m ∈ eval ρ base βˆͺ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m: M
Hlast: last [] = Some m
Hl: False
Hlen: length [] ≀ S (S len)
Hwit': is_witnessing_sequence_old m []

m ∈ eval ρ base βˆͺ app_ext (eval ρ step) (eval ρ patt_ind_gen)
contradiction.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d: M
l: list M
Hlast: last (d :: l) = Some m
Hl: d ∈ eval ρ base ∧ Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (d :: l) l)
Hlen: length (d :: l) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: l)

m ∈ eval ρ base βˆͺ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d: M
l: list M
Hlast: last (d :: l) = Some m
Hl: d ∈ eval ρ base ∧ Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (d :: l) l)
Hlen: S (length l) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: l)

m ∈ eval ρ base βˆͺ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d: M
l: list M
Hlast: last (d :: l) = Some m
Hd: d ∈ eval ρ base
Hl: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (d :: l) l)
Hlen: S (length l) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: l)

m ∈ eval ρ base βˆͺ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d: M
Hlast: last [d] = Some m
Hd: d ∈ eval ρ base
Hl: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [d] [])
Hlen: S (length []) ≀ S (S len)
Hwit': is_witnessing_sequence_old m [d]

m ∈ eval ρ base βˆͺ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d, d0: M
l: list M
Hlast: last (d :: d0 :: l) = Some m
Hd: d ∈ eval ρ base
Hl: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (d :: d0 :: l) (d0 :: l))
Hlen: S (length (d0 :: l)) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: l)
m ∈ eval ρ base βˆͺ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d: M
Hlast: last [d] = Some m
Hd: d ∈ eval ρ base
Hl: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [d] [])
Hlen: S (length []) ≀ S (S len)
Hwit': is_witnessing_sequence_old m [d]

m ∈ eval ρ base βˆͺ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d: M
Hlast: Some d = Some m
Hd: d ∈ eval ρ base
Hl: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [d] [])
Hlen: S (length []) ≀ S (S len)
Hwit': is_witnessing_sequence_old m [d]

m ∈ eval ρ base βˆͺ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d: M
Hlast: Some d = Some m
Hd: d ∈ eval ρ base
Hl: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [d] [])
Hlen: S (length []) ≀ S (S len)
Hwit': is_witnessing_sequence_old m [d]
H0: d = m

m ∈ eval ρ base βˆͺ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d: M
Hd: d ∈ eval ρ base
Hl: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [d] [])
Hlen: S (length []) ≀ S (S len)
Hwit': is_witnessing_sequence_old m [d]
H0: d = m

m ∈ eval ρ base βˆͺ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m: M
Hl: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [m] [])
Hd: m ∈ eval ρ base
Hlen: S (length []) ≀ S (S len)
Hwit': is_witnessing_sequence_old m [m]

m ∈ eval ρ base βˆͺ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m: M
Hl: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [m] [])
Hd: m ∈ eval ρ base
Hlen: S (length []) ≀ S (S len)
Hwit': is_witnessing_sequence_old m [m]

m ∈ eval ρ base
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m: M
Hl: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [m] [])
Hd: m ∈ eval ρ base
Hlen: S (length []) ≀ S (S len)
Hwit': is_witnessing_sequence_old m [m]

m ∈ eval ρ base
apply Hd.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d, d0: M
l: list M
Hlast: last (d :: d0 :: l) = Some m
Hd: d ∈ eval ρ base
Hl: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (d :: d0 :: l) (d0 :: l))
Hlen: S (length (d0 :: l)) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: l)

m ∈ eval ρ base βˆͺ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d, d0: M
l: list M
Hlast: last (d :: d0 :: l) = Some m
Hd: d ∈ eval ρ base
Hl: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (d :: d0 :: l) (d0 :: l))
Hlen: S (length (d0 :: l)) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: l)

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d, d0: M
l: list M
Hlast: last (d :: d0 :: l) = Some m
Hd: d ∈ eval ρ base
Hl: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (d :: d0 :: l) (d0 :: l))
Hlen: S (length (d0 :: l)) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: l)

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d, d0: M
l: list M
Hlast: last (d :: d0 :: l) = Some m
Hd: d ∈ eval ρ base
Hl: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (d :: d0 :: l) (d0 :: l))
Hlen: S (length (d0 :: l)) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: l)
P: βˆ€ (m x m' : M) (l : list M), is_witnessing_sequence_old m (x :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m) ↔ last (x :: l) = Some m ∧ is_witnessing_sequence_old m' ((x :: l) ++ [m'])

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d, d0: M
Hlast: last [d; d0] = Some m
Hd: d ∈ eval ρ base
Hl: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [d; d0] [d0])
Hlen: S (length [d0]) ≀ S (S len)
Hwit': is_witnessing_sequence_old m [d; d0]
P: βˆ€ (m x m' : M) (l : list M), is_witnessing_sequence_old m (x :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m) ↔ last (x :: l) = Some m ∧ is_witnessing_sequence_old m' ((x :: l) ++ [m'])

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (d :: d0 :: x' :: l') = Some m
Hd: d ∈ eval ρ base
Hl: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (d :: d0 :: x' :: l') (d0 :: x' :: l'))
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: βˆ€ (m x m' : M) (l : list M), is_witnessing_sequence_old m (x :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m) ↔ last (x :: l) = Some m ∧ is_witnessing_sequence_old m' ((x :: l) ++ [m'])
m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d, d0: M
Hlast: last [d; d0] = Some m
Hd: d ∈ eval ρ base
Hl: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [d; d0] [d0])
Hlen: S (length [d0]) ≀ S (S len)
Hwit': is_witnessing_sequence_old m [d; d0]
P: βˆ€ (m x m' : M) (l : list M), is_witnessing_sequence_old m (x :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m) ↔ last (x :: l) = Some m ∧ is_witnessing_sequence_old m' ((x :: l) ++ [m'])

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d, d0: M
Hlast: Some d0 = Some m
Hd: d ∈ eval ρ base
Hl: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [d; d0] [d0])
Hlen: S (length [d0]) ≀ S (S len)
Hwit': is_witnessing_sequence_old m [d; d0]
P: βˆ€ (m x m' : M) (l : list M), is_witnessing_sequence_old m (x :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m) ↔ last (x :: l) = Some m ∧ is_witnessing_sequence_old m' ((x :: l) ++ [m'])

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d, d0: M
Hlast: Some d0 = Some m
Hd: d ∈ eval ρ base
Hl: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [d; d0] [d0])
Hlen: S (length [d0]) ≀ S (S len)
Hwit': is_witnessing_sequence_old m [d; d0]
P: βˆ€ (m x m' : M) (l : list M), is_witnessing_sequence_old m (x :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m) ↔ last (x :: l) = Some m ∧ is_witnessing_sequence_old m' ((x :: l) ++ [m'])
H0: d0 = m

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d: M
Hlast: Some m = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m [d; m]
Hlen: S (length [m]) ≀ S (S len)
Hl: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [d; m] [m])
P: βˆ€ (m x m' : M) (l : list M), is_witnessing_sequence_old m (x :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m) ↔ last (x :: l) = Some m ∧ is_witnessing_sequence_old m' ((x :: l) ++ [m'])

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d: M
Hlast: Some m = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m [d; m]
Hlen: S (length [m]) ≀ S (S len)
Hl: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [d; m] [m])
P: is_witnessing_sequence_old d [d] ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' d) ↔ last [d] = Some d ∧ is_witnessing_sequence_old m ([d] ++ [m])

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d: M
Hlast: Some m = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m [d; m]
Hlen: S (length [m]) ≀ S (S len)
Hl: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [d; m] [m])
P: last [d] = Some d ∧ is_witnessing_sequence_old m ([d] ++ [m]) β†’ is_witnessing_sequence_old d [d] ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' d)

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d: M
Hlast: Some m = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m [d; m]
Hlen: S (length [m]) ≀ S (S len)
Hl: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [d; m] [m])
P: Some d = Some d ∧ is_witnessing_sequence_old m [d; m] β†’ is_witnessing_sequence_old d [d] ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' d)

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d: M
Hlast: Some m = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m [d; m]
Hlen: S (length [m]) ≀ S (S len)
Hl: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) [(d, m)]
P: Some d = Some d ∧ is_witnessing_sequence_old m [d; m] β†’ is_witnessing_sequence_old d [d] ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' d)

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d: M
Hlast: Some m = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m [d; m]
Hlen: S (length [m]) ≀ S (S len)
Hl: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) [(d, m)]
P: Some d = Some d ∧ is_witnessing_sequence_old m [d; m] β†’ is_witnessing_sequence_old d [d] ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' d)
x: (M * M)%type
l: list (M * M)
H1: m ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []
H: x = (d, m)
H0: l = []

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d: M
Hlast: Some m = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m [d; m]
Hlen: S (length [m]) ≀ S (S len)
Hl: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) [(d, m)]
P: Some d = Some d ∧ is_witnessing_sequence_old m [d; m] β†’ is_witnessing_sequence_old d [d] ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' d)
H1: m ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d: M
Hlast: Some m = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m [d; m]
Hlen: S (length [m]) ≀ S (S len)
P: Some d = Some d ∧ is_witnessing_sequence_old m [d; m] β†’ is_witnessing_sequence_old d [d] ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' d)
H1: m ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d: M
Hlast: Some m = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m [d; m]
Hlen: S (length [m]) ≀ S (S len)
P: Some d = Some d ∧ is_witnessing_sequence_old m [d; m] β†’ is_witnessing_sequence_old d [d] ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' d)
H1: m ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []

Some d = Some d
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d: M
Hlast: Some m = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m [d; m]
Hlen: S (length [m]) ≀ S (S len)
P: Some d = Some d ∧ is_witnessing_sequence_old m [d; m] β†’ is_witnessing_sequence_old d [d] ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' d)
H1: m ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []
Hsomed: Some d = Some d
m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d: M
Hlast: Some m = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m [d; m]
Hlen: S (length [m]) ≀ S (S len)
P: Some d = Some d ∧ is_witnessing_sequence_old m [d; m] β†’ is_witnessing_sequence_old d [d] ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' d)
H1: m ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []

Some d = Some d
reflexivity.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d: M
Hlast: Some m = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m [d; m]
Hlen: S (length [m]) ≀ S (S len)
P: Some d = Some d ∧ is_witnessing_sequence_old m [d; m] β†’ is_witnessing_sequence_old d [d] ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' d)
H1: m ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []
Hsomed: Some d = Some d

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d: M
Hlast: Some m = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m [d; m]
Hlen: S (length [m]) ≀ S (S len)
P: is_witnessing_sequence_old d [d] ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' d)
H1: m ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []
Hsomed: Some d = Some d

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d: M
Hlast: Some m = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m [d; m]
Hlen: S (length [m]) ≀ S (S len)
Hwitd: is_witnessing_sequence_old d [d]
step': M
Hstep': step' ∈ eval ρ step ∧ m ∈ app_interp M step' d
H1: m ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []
Hsomed: Some d = Some d

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d: M
Hlast: Some m = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m [d; m]
Hlen: S (length [m]) ≀ S (S len)
Hwitd: is_witnessing_sequence_old d [d]
step': M
Hstep': step' ∈ eval ρ step ∧ m ∈ app_interp M step' d
H1: m ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []
Hsomed: Some d = Some d

βˆƒ re : M, step' ∈ eval ρ step ∧ re ∈ eval ρ patt_ind_gen ∧ m ∈ app_interp M step' re
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d: M
Hlast: Some m = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m [d; m]
Hlen: S (length [m]) ≀ S (S len)
Hwitd: is_witnessing_sequence_old d [d]
step': M
Hstep': step' ∈ eval ρ step ∧ m ∈ app_interp M step' d
H1: m ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []
Hsomed: Some d = Some d

step' ∈ eval ρ step ∧ d ∈ eval ρ patt_ind_gen ∧ m ∈ app_interp M step' d
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d: M
Hlast: Some m = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m [d; m]
Hlen: S (length [m]) ≀ S (S len)
Hwitd: is_witnessing_sequence_old d [d]
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' d
H1: m ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []
Hsomed: Some d = Some d

step' ∈ eval ρ step ∧ d ∈ eval ρ patt_ind_gen ∧ m ∈ app_interp M step' d
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d: M
Hlast: Some m = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m [d; m]
Hlen: S (length [m]) ≀ S (S len)
Hwitd: is_witnessing_sequence_old d [d]
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' d
H1: m ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []
Hsomed: Some d = Some d

step' ∈ eval ρ step
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d: M
Hlast: Some m = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m [d; m]
Hlen: S (length [m]) ≀ S (S len)
Hwitd: is_witnessing_sequence_old d [d]
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' d
H1: m ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []
Hsomed: Some d = Some d
d ∈ eval ρ patt_ind_gen ∧ m ∈ app_interp M step' d
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d: M
Hlast: Some m = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m [d; m]
Hlen: S (length [m]) ≀ S (S len)
Hwitd: is_witnessing_sequence_old d [d]
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' d
H1: m ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []
Hsomed: Some d = Some d

step' ∈ eval ρ step
apply Hstep'.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d: M
Hlast: Some m = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m [d; m]
Hlen: S (length [m]) ≀ S (S len)
Hwitd: is_witnessing_sequence_old d [d]
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' d
H1: m ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []
Hsomed: Some d = Some d

d ∈ eval ρ patt_ind_gen ∧ m ∈ app_interp M step' d
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d: M
Hlast: Some m = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m [d; m]
Hlen: S (length [m]) ≀ S (S len)
Hwitd: is_witnessing_sequence_old d [d]
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' d
H1: m ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []
Hsomed: Some d = Some d

d ∈ eval ρ patt_ind_gen
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d: M
Hlast: Some m = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m [d; m]
Hlen: S (length [m]) ≀ S (S len)
Hwitd: is_witnessing_sequence_old d [d]
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' d
H1: m ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []
Hsomed: Some d = Some d
m ∈ app_interp M step' d
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d: M
Hlast: Some m = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m [d; m]
Hlen: S (length [m]) ≀ S (S len)
Hwitd: is_witnessing_sequence_old d [d]
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' d
H1: m ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []
Hsomed: Some d = Some d

d ∈ eval ρ patt_ind_gen
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d: M
Hlast: Some m = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m [d; m]
Hlen: S (length [m]) ≀ S (S len)
Hwitd: is_witnessing_sequence_old d [d]
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' d
H1: m ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []
Hsomed: Some d = Some d

d ∈ witnessed_elements_old_of_max_len (S len)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d: M
Hlast: Some m = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m [d; m]
Hlen: S (length [m]) ≀ S (S len)
Hwitd: is_witnessing_sequence_old d [d]
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' d
H1: m ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []
Hsomed: Some d = Some d

d ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]}
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d: M
Hlast: Some m = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m [d; m]
Hlen: S (length [m]) ≀ S (S len)
Hwitd: is_witnessing_sequence_old d [d]
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' d
H1: m ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []
Hsomed: Some d = Some d

is_witnessing_sequence_old d [d] ∧ length [d] ≀ S len
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d: M
Hlast: Some m = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m [d; m]
Hlen: S (length [m]) ≀ S (S len)
Hwitd: is_witnessing_sequence_old d [d]
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' d
H1: m ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []
Hsomed: Some d = Some d

is_witnessing_sequence_old d [d]
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d: M
Hlast: Some m = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m [d; m]
Hlen: S (length [m]) ≀ S (S len)
Hwitd: is_witnessing_sequence_old d [d]
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' d
H1: m ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []
Hsomed: Some d = Some d
length [d] ≀ S len
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d: M
Hlast: Some m = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m [d; m]
Hlen: S (length [m]) ≀ S (S len)
Hwitd: is_witnessing_sequence_old d [d]
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' d
H1: m ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []
Hsomed: Some d = Some d

length [d] ≀ S len
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d: M
Hlast: Some m = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m [d; m]
Hlen: S (length [m]) ≀ S (S len)
Hwitd: is_witnessing_sequence_old d [d]
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' d
H1: m ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []
Hsomed: Some d = Some d

1 ≀ S len
lia.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d: M
Hlast: Some m = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m [d; m]
Hlen: S (length [m]) ≀ S (S len)
Hwitd: is_witnessing_sequence_old d [d]
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' d
H1: m ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []
Hsomed: Some d = Some d

is_witnessing_sequence_old d [d]
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d: M
Hlast: Some m = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m [d; m]
Hlen: S (length [m]) ≀ S (S len)
Hwitd: is_witnessing_sequence_old d [d]
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' d
H1: m ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []
Hsomed: Some d = Some d

is_witnessing_sequence_old d [d]
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d: M
Hlast: Some m = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m [d; m]
Hlen: S (length [m]) ≀ S (S len)
Hwitd: is_witnessing_sequence_old d [d]
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' d
H1: m ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []
Hsomed: Some d = Some d

is_witnessing_sequence_old d [d]
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d: M
Hlast: Some m = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m [d; m]
Hlen: S (length [m]) ≀ S (S len)
Hwitd: is_witnessing_sequence_old d [d]
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' d
H1: m ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []
Hsomed: Some d = Some d

last [d] = Some d
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d: M
Hlast: Some m = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m [d; m]
Hlen: S (length [m]) ≀ S (S len)
Hwitd: is_witnessing_sequence_old d [d]
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' d
H1: m ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []
Hsomed: Some d = Some d
d ∈ eval ρ base ∧ Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [d] [])
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d: M
Hlast: Some m = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m [d; m]
Hlen: S (length [m]) ≀ S (S len)
Hwitd: is_witnessing_sequence_old d [d]
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' d
H1: m ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []
Hsomed: Some d = Some d

last [d] = Some d
reflexivity.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d: M
Hlast: Some m = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m [d; m]
Hlen: S (length [m]) ≀ S (S len)
Hwitd: is_witnessing_sequence_old d [d]
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' d
H1: m ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []
Hsomed: Some d = Some d

d ∈ eval ρ base ∧ Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [d] [])
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d: M
Hlast: Some m = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m [d; m]
Hlen: S (length [m]) ≀ S (S len)
Hwitd: is_witnessing_sequence_old d [d]
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' d
H1: m ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []
Hsomed: Some d = Some d

d ∈ eval ρ base
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d: M
Hlast: Some m = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m [d; m]
Hlen: S (length [m]) ≀ S (S len)
Hwitd: is_witnessing_sequence_old d [d]
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' d
H1: m ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []
Hsomed: Some d = Some d
Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [d] [])
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d: M
Hlast: Some m = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m [d; m]
Hlen: S (length [m]) ≀ S (S len)
Hwitd: is_witnessing_sequence_old d [d]
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' d
H1: m ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []
Hsomed: Some d = Some d

d ∈ eval ρ base
apply Hd.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d: M
Hlast: Some m = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m [d; m]
Hlen: S (length [m]) ≀ S (S len)
Hwitd: is_witnessing_sequence_old d [d]
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' d
H1: m ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []
Hsomed: Some d = Some d

Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip [d] [])
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d: M
Hlast: Some m = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m [d; m]
Hlen: S (length [m]) ≀ S (S len)
Hwitd: is_witnessing_sequence_old d [d]
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' d
H1: m ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []
Hsomed: Some d = Some d

True
exact I.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d: M
Hlast: Some m = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m [d; m]
Hlen: S (length [m]) ≀ S (S len)
Hwitd: is_witnessing_sequence_old d [d]
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' d
H1: m ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) []
Hsomed: Some d = Some d

m ∈ app_interp M step' d
apply Hm.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (d :: d0 :: x' :: l') = Some m
Hd: d ∈ eval ρ base
Hl: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (d :: d0 :: x' :: l') (d0 :: x' :: l'))
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: βˆ€ (m x m' : M) (l : list M), is_witnessing_sequence_old m (x :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m) ↔ last (x :: l) = Some m ∧ is_witnessing_sequence_old m' ((x :: l) ++ [m'])

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (d :: d0 :: x' :: l') = Some m
Hd: d ∈ eval ρ base
Hl: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (d :: d0 :: x' :: l') (d0 :: x' :: l'))
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: βˆ€ (m x m' : M) (l : list M), is_witnessing_sequence_old m (x :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m) ↔ last (x :: l) = Some m ∧ is_witnessing_sequence_old m' (x :: l ++ [m'])

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hl: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) (zip (d :: d0 :: x' :: l') (d0 :: x' :: l'))
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: βˆ€ (m x m' : M) (l : list M), is_witnessing_sequence_old m (x :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m) ↔ last (x :: l) = Some m ∧ is_witnessing_sequence_old m' (x :: l ++ [m'])

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hl: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) ((d, d0) :: (d0, x') :: match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end)
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: βˆ€ (m x m' : M) (l : list M), is_witnessing_sequence_old m (x :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m) ↔ last (x :: l) = Some m ∧ is_witnessing_sequence_old m' (x :: l ++ [m'])

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hl: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) ((d, d0) :: (d0, x') :: match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end)
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: βˆ€ (m x m' : M) (l : list M), is_witnessing_sequence_old m (x :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m) ↔ last (x :: l) = Some m ∧ is_witnessing_sequence_old m' (x :: l ++ [m'])
x: (M * M)%type
l: list (M * M)
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) ((d0, x') :: match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end)
H: x = (d, d0)
H0: l = (d0, x') :: match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hl: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) ((d, d0) :: (d0, x') :: match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end)
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: βˆ€ (m x m' : M) (l : list M), is_witnessing_sequence_old m (x :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m) ↔ last (x :: l) = Some m ∧ is_witnessing_sequence_old m' (x :: l ++ [m'])
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) ((d0, x') :: match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end)

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: βˆ€ (m x m' : M) (l : list M), is_witnessing_sequence_old m (x :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m) ↔ last (x :: l) = Some m ∧ is_witnessing_sequence_old m' (x :: l ++ [m'])
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) ((d0, x') :: match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end)

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: βˆ€ (m x m' : M) (l : list M), is_witnessing_sequence_old m (x :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m) ↔ last (x :: l) = Some m ∧ is_witnessing_sequence_old m' (x :: l ++ [m'])
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) ((d0, x') :: match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end)
x: (M * M)%type
l: list (M * M)
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
H: x = (d0, x')
H0: l = match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: βˆ€ (m x m' : M) (l : list M), is_witnessing_sequence_old m (x :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m) ↔ last (x :: l) = Some m ∧ is_witnessing_sequence_old m' (x :: l ++ [m'])
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H2: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) ((d0, x') :: match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end)
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: βˆ€ (m x m' : M) (l : list M), is_witnessing_sequence_old m (x :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m) ↔ last (x :: l) = Some m ∧ is_witnessing_sequence_old m' (x :: l ++ [m'])
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: βˆ€ (m x m' : M) (l : list M), is_witnessing_sequence_old m (x :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m) ↔ last (x :: l) = Some m ∧ is_witnessing_sequence_old m' (x :: l ++ [m'])
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
mp:= rev (d0 :: x' :: l') !! 1: option M

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: βˆ€ (m x m' : M) (l : list M), is_witnessing_sequence_old m (x :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m) ↔ last (x :: l) = Some m ∧ is_witnessing_sequence_old m' (x :: l ++ [m'])
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
mp:= ((rev l' ++ [x']) ++ [d0]) !! 1: option M

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: βˆ€ (m x m' : M) (l : list M), is_witnessing_sequence_old m (x :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m) ↔ last (x :: l) = Some m ∧ is_witnessing_sequence_old m' (x :: l ++ [m'])
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
mp:= ((rev l' ++ [x']) ++ [d0]) !! 1: option M
Htot: rev (d0 :: x' :: l') !! 1 = Some (rev (d0 :: x' :: l') !!! 1)

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: βˆ€ (m x m' : M) (l : list M), is_witnessing_sequence_old m (x :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m) ↔ last (x :: l) = Some m ∧ is_witnessing_sequence_old m' (x :: l ++ [m'])
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
mp:= ((rev l' ++ [x']) ++ [d0]) !! 1: option M
Htot: rev (d0 :: x' :: l') !! 1 = Some (rev (d0 :: x' :: l') !!! 1)

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: βˆ€ (m x m' : M) (l : list M), is_witnessing_sequence_old m (x :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m) ↔ last (x :: l) = Some m ∧ is_witnessing_sequence_old m' (x :: l ++ [m'])
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
mp:= ((rev l' ++ [x']) ++ [d0]) !! 1: option M
Inhabited M
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: βˆ€ (m x m' : M) (l : list M), is_witnessing_sequence_old m (x :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m) ↔ last (x :: l) = Some m ∧ is_witnessing_sequence_old m' (x :: l ++ [m'])
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
mp:= ((rev l' ++ [x']) ++ [d0]) !! 1: option M
1 < length (rev (d0 :: x' :: l'))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: βˆ€ (m x m' : M) (l : list M), is_witnessing_sequence_old m (x :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m) ↔ last (x :: l) = Some m ∧ is_witnessing_sequence_old m' (x :: l ++ [m'])
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
mp:= ((rev l' ++ [x']) ++ [d0]) !! 1: option M

Inhabited M
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: βˆ€ (m x m' : M) (l : list M), is_witnessing_sequence_old m (x :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m) ↔ last (x :: l) = Some m ∧ is_witnessing_sequence_old m' (x :: l ++ [m'])
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
mp:= ((rev l' ++ [x']) ++ [d0]) !! 1: option M

M
exact d0.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: βˆ€ (m x m' : M) (l : list M), is_witnessing_sequence_old m (x :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m) ↔ last (x :: l) = Some m ∧ is_witnessing_sequence_old m' (x :: l ++ [m'])
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
mp:= ((rev l' ++ [x']) ++ [d0]) !! 1: option M
Htot: rev (d0 :: x' :: l') !! 1 = Some (rev (d0 :: x' :: l') !!! 1)

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: βˆ€ (m x m' : M) (l : list M), is_witnessing_sequence_old m (x :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m) ↔ last (x :: l) = Some m ∧ is_witnessing_sequence_old m' (x :: l ++ [m'])
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
mp:= ((rev l' ++ [x']) ++ [d0]) !! 1: option M
1 < length (rev (d0 :: x' :: l'))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: βˆ€ (m x m' : M) (l : list M), is_witnessing_sequence_old m (x :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m) ↔ last (x :: l) = Some m ∧ is_witnessing_sequence_old m' (x :: l ++ [m'])
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
mp:= ((rev l' ++ [x']) ++ [d0]) !! 1: option M

1 < length (rev (d0 :: x' :: l'))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: βˆ€ (m x m' : M) (l : list M), is_witnessing_sequence_old m (x :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m) ↔ last (x :: l) = Some m ∧ is_witnessing_sequence_old m' (x :: l ++ [m'])
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
mp:= ((rev l' ++ [x']) ++ [d0]) !! 1: option M

1 < length ((rev l' ++ [x']) ++ [d0])
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: βˆ€ (m x m' : M) (l : list M), is_witnessing_sequence_old m (x :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m) ↔ last (x :: l) = Some m ∧ is_witnessing_sequence_old m' (x :: l ++ [m'])
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
mp:= ((rev l' ++ [x']) ++ [d0]) !! 1: option M

1 < length (rev l' ++ [x']) + length [d0]
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: βˆ€ (m x m' : M) (l : list M), is_witnessing_sequence_old m (x :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m) ↔ last (x :: l) = Some m ∧ is_witnessing_sequence_old m' (x :: l ++ [m'])
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
mp:= ((rev l' ++ [x']) ++ [d0]) !! 1: option M

1 < length (rev l') + length [x'] + length [d0]
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: βˆ€ (m x m' : M) (l : list M), is_witnessing_sequence_old m (x :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m) ↔ last (x :: l) = Some m ∧ is_witnessing_sequence_old m' (x :: l ++ [m'])
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
mp:= ((rev l' ++ [x']) ++ [d0]) !! 1: option M

1 < length (rev l') + 1 + 1
lia.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: βˆ€ (m x m' : M) (l : list M), is_witnessing_sequence_old m (x :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m) ↔ last (x :: l) = Some m ∧ is_witnessing_sequence_old m' (x :: l ++ [m'])
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
mp:= ((rev l' ++ [x']) ++ [d0]) !! 1: option M
Htot: rev (d0 :: x' :: l') !! 1 = Some (rev (d0 :: x' :: l') !!! 1)

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
IHlen: witnessed_elements_old_of_max_len (S len) βŠ† eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: βˆ€ (m x m' : M) (l : list M), is_witnessing_sequence_old m (x :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m) ↔ last (x :: l) = Some m ∧ is_witnessing_sequence_old m' (x :: l ++ [m'])
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
mp:= ((rev l' ++ [x']) ++ [d0]) !! 1: option M
mprev: M
Heqmprev: mprev = rev (d0 :: x' :: l') !!! 1
Htot: rev (d0 :: x' :: l') !! 1 = Some mprev

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ witnessed_elements_old_of_max_len (S len) β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: βˆ€ (m x m' : M) (l : list M), is_witnessing_sequence_old m (x :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m) ↔ last (x :: l) = Some m ∧ is_witnessing_sequence_old m' (x :: l ++ [m'])
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
mp:= ((rev l' ++ [x']) ++ [d0]) !! 1: option M
Heqmprev: mprev = rev (d0 :: x' :: l') !!! 1
Htot: rev (d0 :: x' :: l') !! 1 = Some mprev

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: βˆ€ (m x m' : M) (l : list M), is_witnessing_sequence_old m (x :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m' ∈ app_interp M step' m) ↔ last (x :: l) = Some m ∧ is_witnessing_sequence_old m' (x :: l ++ [m'])
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
mp:= ((rev l' ++ [x']) ++ [d0]) !! 1: option M
Heqmprev: mprev = rev (d0 :: x' :: l') !!! 1
Htot: rev (d0 :: x' :: l') !! 1 = Some mprev

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: is_witnessing_sequence_old mprev (d :: rev (tail (rev (d0 :: x' :: l')))) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' mprev) ↔ last (d :: rev (tail (rev (d0 :: x' :: l')))) = Some mprev ∧ is_witnessing_sequence_old m (d :: rev (tail (rev (d0 :: x' :: l'))) ++ [m])
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
mp:= ((rev l' ++ [x']) ++ [d0]) !! 1: option M
Heqmprev: mprev = rev (d0 :: x' :: l') !!! 1
Htot: rev (d0 :: x' :: l') !! 1 = Some mprev

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: is_witnessing_sequence_old mprev (d :: rev (tail (rev (d0 :: x' :: l')))) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' mprev) ↔ last (d :: rev (tail (rev (d0 :: x' :: l')))) = Some mprev ∧ is_witnessing_sequence_old m (d :: rev (tail (rev (d0 :: x' :: l'))) ++ [m])
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
mp:= ((rev l' ++ [x']) ++ [d0]) !! 1: option M
Heqmprev: mprev = rev (d0 :: x' :: l') !!! 1
Htot: rev (d0 :: x' :: l') !! 1 = Some mprev

d :: d0 :: x' :: l' = d :: rev (tail (rev (d0 :: x' :: l'))) ++ [m]
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: is_witnessing_sequence_old mprev (d :: rev (tail (rev (d0 :: x' :: l')))) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' mprev) ↔ last (d :: rev (tail (rev (d0 :: x' :: l')))) = Some mprev ∧ is_witnessing_sequence_old m (d :: rev (tail (rev (d0 :: x' :: l'))) ++ [m])
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
mp:= ((rev l' ++ [x']) ++ [d0]) !! 1: option M
Heqmprev: mprev = rev (d0 :: x' :: l') !!! 1
Htot: rev (d0 :: x' :: l') !! 1 = Some mprev
Heq1: d :: d0 :: x' :: l' = d :: rev (tail (rev (d0 :: x' :: l'))) ++ [m]
m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: is_witnessing_sequence_old mprev (d :: rev (tail (rev (d0 :: x' :: l')))) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' mprev) ↔ last (d :: rev (tail (rev (d0 :: x' :: l')))) = Some mprev ∧ is_witnessing_sequence_old m (d :: rev (tail (rev (d0 :: x' :: l'))) ++ [m])
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
mp:= ((rev l' ++ [x']) ++ [d0]) !! 1: option M
Heqmprev: mprev = rev (d0 :: x' :: l') !!! 1
Htot: rev (d0 :: x' :: l') !! 1 = Some mprev

d :: d0 :: x' :: l' = d :: rev (tail (rev (d0 :: x' :: l'))) ++ [m]
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: is_witnessing_sequence_old mprev (d :: rev (tail (rev (d0 :: x' :: l')))) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' mprev) ↔ last (d :: rev (tail (rev (d0 :: x' :: l')))) = Some mprev ∧ is_witnessing_sequence_old m (d :: rev (tail (rev (d0 :: x' :: l'))) ++ [m])
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
mp:= ((rev l' ++ [x']) ++ [d0]) !! 1: option M
Heqmprev: mprev = rev (d0 :: x' :: l') !!! 1
Htot: rev (d0 :: x' :: l') !! 1 = Some mprev

d0 :: x' :: l' = rev (tail (rev (d0 :: x' :: l'))) ++ [m]
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: is_witnessing_sequence_old mprev (d :: rev (tail (rev (d0 :: x' :: l')))) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' mprev) ↔ last (d :: rev (tail (rev (d0 :: x' :: l')))) = Some mprev ∧ is_witnessing_sequence_old m (d :: rev (tail (rev (d0 :: x' :: l'))) ++ [m])
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
mp:= ((rev l' ++ [x']) ++ [d0]) !! 1: option M
Heqmprev: mprev = rev (d0 :: x' :: l') !!! 1
Htot: rev (d0 :: x' :: l') !! 1 = Some mprev

d0 :: x' :: l' = rev (tail ((rev l' ++ [x']) ++ [d0])) ++ [m]
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: is_witnessing_sequence_old mprev (d :: rev (tail (rev (d0 :: x' :: l')))) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' mprev) ↔ last (d :: rev (tail (rev (d0 :: x' :: l')))) = Some mprev ∧ is_witnessing_sequence_old m (d :: rev (tail (rev (d0 :: x' :: l'))) ++ [m])
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
mp:= ((rev l' ++ [x']) ++ [d0]) !! 1: option M
Heqmprev: mprev = rev (d0 :: x' :: l') !!! 1
Htot: rev (d0 :: x' :: l') !! 1 = Some mprev

[x'] = rev [x']
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: is_witnessing_sequence_old mprev (d :: rev (tail (rev (d0 :: x' :: l')))) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' mprev) ↔ last (d :: rev (tail (rev (d0 :: x' :: l')))) = Some mprev ∧ is_witnessing_sequence_old m (d :: rev (tail (rev (d0 :: x' :: l'))) ++ [m])
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
mp:= ((rev l' ++ [x']) ++ [d0]) !! 1: option M
Heqmprev: mprev = rev (d0 :: x' :: l') !!! 1
Htot: rev (d0 :: x' :: l') !! 1 = Some mprev
Hx'r: [x'] = rev [x']
d0 :: x' :: l' = rev (tail ((rev l' ++ [x']) ++ [d0])) ++ [m]
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: is_witnessing_sequence_old mprev (d :: rev (tail (rev (d0 :: x' :: l')))) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' mprev) ↔ last (d :: rev (tail (rev (d0 :: x' :: l')))) = Some mprev ∧ is_witnessing_sequence_old m (d :: rev (tail (rev (d0 :: x' :: l'))) ++ [m])
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
mp:= ((rev l' ++ [x']) ++ [d0]) !! 1: option M
Heqmprev: mprev = rev (d0 :: x' :: l') !!! 1
Htot: rev (d0 :: x' :: l') !! 1 = Some mprev

[x'] = rev [x']
reflexivity.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: is_witnessing_sequence_old mprev (d :: rev (tail (rev (d0 :: x' :: l')))) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' mprev) ↔ last (d :: rev (tail (rev (d0 :: x' :: l')))) = Some mprev ∧ is_witnessing_sequence_old m (d :: rev (tail (rev (d0 :: x' :: l'))) ++ [m])
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
mp:= ((rev l' ++ [x']) ++ [d0]) !! 1: option M
Heqmprev: mprev = rev (d0 :: x' :: l') !!! 1
Htot: rev (d0 :: x' :: l') !! 1 = Some mprev
Hx'r: [x'] = rev [x']

d0 :: x' :: l' = rev (tail ((rev l' ++ [x']) ++ [d0])) ++ [m]
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: is_witnessing_sequence_old mprev (d :: rev (tail (rev (d0 :: x' :: l')))) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' mprev) ↔ last (d :: rev (tail (rev (d0 :: x' :: l')))) = Some mprev ∧ is_witnessing_sequence_old m (d :: rev (tail (rev (d0 :: x' :: l'))) ++ [m])
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
mp:= ((rev l' ++ [x']) ++ [d0]) !! 1: option M
Heqmprev: mprev = rev (d0 :: x' :: l') !!! 1
Htot: rev (d0 :: x' :: l') !! 1 = Some mprev
Hx'r: [x'] = rev [x']

d0 :: x' :: l' = rev (tail ((rev l' ++ rev [x']) ++ [d0])) ++ [m]
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: is_witnessing_sequence_old mprev (d :: rev (tail (rev (d0 :: x' :: l')))) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' mprev) ↔ last (d :: rev (tail (rev (d0 :: x' :: l')))) = Some mprev ∧ is_witnessing_sequence_old m (d :: rev (tail (rev (d0 :: x' :: l'))) ++ [m])
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
mp:= ((rev l' ++ [x']) ++ [d0]) !! 1: option M
Heqmprev: mprev = rev (d0 :: x' :: l') !!! 1
Htot: rev (d0 :: x' :: l') !! 1 = Some mprev
Hx'r: [x'] = rev [x']

d0 :: x' :: l' = rev (tail (rev ([x'] ++ l') ++ [d0])) ++ [m]
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: is_witnessing_sequence_old mprev (d :: rev (tail (rev (d0 :: x' :: l')))) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' mprev) ↔ last (d :: rev (tail (rev (d0 :: x' :: l')))) = Some mprev ∧ is_witnessing_sequence_old m (d :: rev (tail (rev (d0 :: x' :: l'))) ++ [m])
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
mp:= ((rev l' ++ [x']) ++ [d0]) !! 1: option M
Heqmprev: mprev = rev (d0 :: x' :: l') !!! 1
Htot: rev (d0 :: x' :: l') !! 1 = Some mprev
Hx'r: [x'] = rev [x']

[d0] = rev [d0]
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: is_witnessing_sequence_old mprev (d :: rev (tail (rev (d0 :: x' :: l')))) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' mprev) ↔ last (d :: rev (tail (rev (d0 :: x' :: l')))) = Some mprev ∧ is_witnessing_sequence_old m (d :: rev (tail (rev (d0 :: x' :: l'))) ++ [m])
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
mp:= ((rev l' ++ [x']) ++ [d0]) !! 1: option M
Heqmprev: mprev = rev (d0 :: x' :: l') !!! 1
Htot: rev (d0 :: x' :: l') !! 1 = Some mprev
Hx'r: [x'] = rev [x']
Hd0r: [d0] = rev [d0]
d0 :: x' :: l' = rev (tail (rev ([x'] ++ l') ++ [d0])) ++ [m]
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: is_witnessing_sequence_old mprev (d :: rev (tail (rev (d0 :: x' :: l')))) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' mprev) ↔ last (d :: rev (tail (rev (d0 :: x' :: l')))) = Some mprev ∧ is_witnessing_sequence_old m (d :: rev (tail (rev (d0 :: x' :: l'))) ++ [m])
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
mp:= ((rev l' ++ [x']) ++ [d0]) !! 1: option M
Heqmprev: mprev = rev (d0 :: x' :: l') !!! 1
Htot: rev (d0 :: x' :: l') !! 1 = Some mprev
Hx'r: [x'] = rev [x']

[d0] = rev [d0]
reflexivity.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: is_witnessing_sequence_old mprev (d :: rev (tail (rev (d0 :: x' :: l')))) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' mprev) ↔ last (d :: rev (tail (rev (d0 :: x' :: l')))) = Some mprev ∧ is_witnessing_sequence_old m (d :: rev (tail (rev (d0 :: x' :: l'))) ++ [m])
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
mp:= ((rev l' ++ [x']) ++ [d0]) !! 1: option M
Heqmprev: mprev = rev (d0 :: x' :: l') !!! 1
Htot: rev (d0 :: x' :: l') !! 1 = Some mprev
Hx'r: [x'] = rev [x']
Hd0r: [d0] = rev [d0]

d0 :: x' :: l' = rev (tail (rev ([x'] ++ l') ++ [d0])) ++ [m]
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: is_witnessing_sequence_old mprev (d :: rev (tail (rev (d0 :: x' :: l')))) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' mprev) ↔ last (d :: rev (tail (rev (d0 :: x' :: l')))) = Some mprev ∧ is_witnessing_sequence_old m (d :: rev (tail (rev (d0 :: x' :: l'))) ++ [m])
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
mp:= ((rev l' ++ [x']) ++ [d0]) !! 1: option M
Heqmprev: mprev = rev (d0 :: x' :: l') !!! 1
Htot: rev (d0 :: x' :: l') !! 1 = Some mprev
Hx'r: [x'] = rev [x']
Hd0r: [d0] = rev [d0]

d0 :: x' :: l' = rev (tail (rev ([x'] ++ l') ++ rev [d0])) ++ [m]
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: is_witnessing_sequence_old mprev (d :: rev (tail (rev (d0 :: x' :: l')))) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' mprev) ↔ last (d :: rev (tail (rev (d0 :: x' :: l')))) = Some mprev ∧ is_witnessing_sequence_old m (d :: rev (tail (rev (d0 :: x' :: l'))) ++ [m])
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
mp:= ((rev l' ++ [x']) ++ [d0]) !! 1: option M
Heqmprev: mprev = rev (d0 :: x' :: l') !!! 1
Htot: rev (d0 :: x' :: l') !! 1 = Some mprev
Hx'r: [x'] = rev [x']
Hd0r: [d0] = rev [d0]

d0 :: x' :: l' = rev (tail (rev ([d0] ++ [x'] ++ l'))) ++ [m]
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: is_witnessing_sequence_old mprev (d :: rev (tail (rev (d0 :: x' :: l')))) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' mprev) ↔ last (d :: rev (tail (rev (d0 :: x' :: l')))) = Some mprev ∧ is_witnessing_sequence_old m (d :: rev (tail (rev (d0 :: x' :: l'))) ++ [m])
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
mp:= ((rev l' ++ [x']) ++ [d0]) !! 1: option M
Heqmprev: mprev = rev (d0 :: x' :: l') !!! 1
Htot: rev (d0 :: x' :: l') !! 1 = Some mprev
Hx'r: [x'] = rev [x']
Hd0r: [d0] = rev [d0]

last ([d0] ++ [x'] ++ l') = Some m
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: is_witnessing_sequence_old mprev (d :: rev (tail (rev (d0 :: x' :: l')))) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' mprev) ↔ last (d :: rev (tail (rev (d0 :: x' :: l')))) = Some mprev ∧ is_witnessing_sequence_old m (d :: rev (tail (rev (d0 :: x' :: l'))) ++ [m])
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
mp:= ((rev l' ++ [x']) ++ [d0]) !! 1: option M
Heqmprev: mprev = rev (d0 :: x' :: l') !!! 1
Htot: rev (d0 :: x' :: l') !! 1 = Some mprev
Hx'r: [x'] = rev [x']
Hd0r: [d0] = rev [d0]
d0 :: x' :: l' = [d0] ++ [x'] ++ l'
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: is_witnessing_sequence_old mprev (d :: rev (tail (rev (d0 :: x' :: l')))) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' mprev) ↔ last (d :: rev (tail (rev (d0 :: x' :: l')))) = Some mprev ∧ is_witnessing_sequence_old m (d :: rev (tail (rev (d0 :: x' :: l'))) ++ [m])
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
mp:= ((rev l' ++ [x']) ++ [d0]) !! 1: option M
Heqmprev: mprev = rev (d0 :: x' :: l') !!! 1
Htot: rev (d0 :: x' :: l') !! 1 = Some mprev
Hx'r: [x'] = rev [x']
Hd0r: [d0] = rev [d0]

last (x' :: l') = Some m
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: is_witnessing_sequence_old mprev (d :: rev (tail (rev (d0 :: x' :: l')))) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' mprev) ↔ last (d :: rev (tail (rev (d0 :: x' :: l')))) = Some mprev ∧ is_witnessing_sequence_old m (d :: rev (tail (rev (d0 :: x' :: l'))) ++ [m])
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
mp:= ((rev l' ++ [x']) ++ [d0]) !! 1: option M
Heqmprev: mprev = rev (d0 :: x' :: l') !!! 1
Htot: rev (d0 :: x' :: l') !! 1 = Some mprev
Hx'r: [x'] = rev [x']
Hd0r: [d0] = rev [d0]
d0 :: x' :: l' = [d0] ++ [x'] ++ l'
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: is_witnessing_sequence_old mprev (d :: rev (tail (rev (d0 :: x' :: l')))) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' mprev) ↔ last (d :: rev (tail (rev (d0 :: x' :: l')))) = Some mprev ∧ is_witnessing_sequence_old m (d :: rev (tail (rev (d0 :: x' :: l'))) ++ [m])
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
mp:= ((rev l' ++ [x']) ++ [d0]) !! 1: option M
Heqmprev: mprev = rev (d0 :: x' :: l') !!! 1
Htot: rev (d0 :: x' :: l') !! 1 = Some mprev
Hx'r: [x'] = rev [x']
Hd0r: [d0] = rev [d0]

d0 :: x' :: l' = [d0] ++ [x'] ++ l'
reflexivity.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: is_witnessing_sequence_old mprev (d :: rev (tail (rev (d0 :: x' :: l')))) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' mprev) ↔ last (d :: rev (tail (rev (d0 :: x' :: l')))) = Some mprev ∧ is_witnessing_sequence_old m (d :: rev (tail (rev (d0 :: x' :: l'))) ++ [m])
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
mp:= ((rev l' ++ [x']) ++ [d0]) !! 1: option M
Heqmprev: mprev = rev (d0 :: x' :: l') !!! 1
Htot: rev (d0 :: x' :: l') !! 1 = Some mprev
Heq1: d :: d0 :: x' :: l' = d :: rev (tail (rev (d0 :: x' :: l'))) ++ [m]

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: last (d :: rev (tail (rev (d0 :: x' :: l')))) = Some mprev ∧ is_witnessing_sequence_old m (d :: rev (tail (rev (d0 :: x' :: l'))) ++ [m]) β†’ is_witnessing_sequence_old mprev (d :: rev (tail (rev (d0 :: x' :: l')))) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' mprev)
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
mp:= ((rev l' ++ [x']) ++ [d0]) !! 1: option M
Heqmprev: mprev = rev (d0 :: x' :: l') !!! 1
Htot: rev (d0 :: x' :: l') !! 1 = Some mprev
Heq1: d :: d0 :: x' :: l' = d :: rev (tail (rev (d0 :: x' :: l'))) ++ [m]

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
Heqrev: rev (tail (rev (d0 :: x' :: l'))) = []
P: last [d] = Some mprev ∧ is_witnessing_sequence_old m (d :: [] ++ [m]) β†’ is_witnessing_sequence_old mprev [d] ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' mprev)
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
mp:= ((rev l' ++ [x']) ++ [d0]) !! 1: option M
Heqmprev: mprev = rev (d0 :: x' :: l') !!! 1
Htot: rev (d0 :: x' :: l') !! 1 = Some mprev
Heq1: d :: d0 :: x' :: l' = d :: [] ++ [m]

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
d1: M
l: list M
Heqrev: rev (tail (rev (d0 :: x' :: l'))) = d1 :: l
P: last (d :: d1 :: l) = Some mprev ∧ is_witnessing_sequence_old m (d :: (d1 :: l) ++ [m]) β†’ is_witnessing_sequence_old mprev (d :: d1 :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' mprev)
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
mp:= ((rev l' ++ [x']) ++ [d0]) !! 1: option M
Heqmprev: mprev = rev (d0 :: x' :: l') !!! 1
Htot: rev (d0 :: x' :: l') !! 1 = Some mprev
Heq1: d :: d0 :: x' :: l' = d :: (d1 :: l) ++ [m]
m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
Heqrev: rev (tail (rev (d0 :: x' :: l'))) = []
P: last [d] = Some mprev ∧ is_witnessing_sequence_old m (d :: [] ++ [m]) β†’ is_witnessing_sequence_old mprev [d] ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' mprev)
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
mp:= ((rev l' ++ [x']) ++ [d0]) !! 1: option M
Heqmprev: mprev = rev (d0 :: x' :: l') !!! 1
Htot: rev (d0 :: x' :: l') !! 1 = Some mprev
Heq1: d :: d0 :: x' :: l' = d :: [] ++ [m]

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
Heqrev: length (rev (tail (rev (d0 :: x' :: l')))) = 0
P: last [d] = Some mprev ∧ is_witnessing_sequence_old m (d :: [] ++ [m]) β†’ is_witnessing_sequence_old mprev [d] ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' mprev)
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
mp:= ((rev l' ++ [x']) ++ [d0]) !! 1: option M
Heqmprev: mprev = rev (d0 :: x' :: l') !!! 1
Htot: rev (d0 :: x' :: l') !! 1 = Some mprev
Heq1: d :: d0 :: x' :: l' = d :: [] ++ [m]

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: last [d] = Some mprev ∧ is_witnessing_sequence_old m (d :: [] ++ [m]) β†’ is_witnessing_sequence_old mprev [d] ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' mprev)
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
mp:= ((rev l' ++ [x']) ++ [d0]) !! 1: option M
Heqmprev: mprev = rev (d0 :: x' :: l') !!! 1
Htot: rev (d0 :: x' :: l') !! 1 = Some mprev
Heq1: d :: d0 :: x' :: l' = d :: [] ++ [m]
Heqrev: length (tail (rev (d0 :: x' :: l'))) = 0

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: last [d] = Some mprev ∧ is_witnessing_sequence_old m (d :: [] ++ [m]) β†’ is_witnessing_sequence_old mprev [d] ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' mprev)
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
mp:= ((rev l' ++ [x']) ++ [d0]) !! 1: option M
Heqmprev: mprev = rev (d0 :: x' :: l') !!! 1
Htot: rev (d0 :: x' :: l') !! 1 = Some mprev
Heq1: d :: d0 :: x' :: l' = d :: [] ++ [m]
Heqrev: length (rev (d0 :: x' :: l')) = 0 ∨ length (rev (d0 :: x' :: l')) = 1

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: last [d] = Some mprev ∧ is_witnessing_sequence_old m (d :: [] ++ [m]) β†’ is_witnessing_sequence_old mprev [d] ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' mprev)
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
mp:= ((rev l' ++ [x']) ++ [d0]) !! 1: option M
Heqmprev: mprev = rev (d0 :: x' :: l') !!! 1
Htot: rev (d0 :: x' :: l') !! 1 = Some mprev
Heq1: d :: d0 :: x' :: l' = d :: [] ++ [m]
Heqrev: length (d0 :: x' :: l') = 0 ∨ length (d0 :: x' :: l') = 1

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
P: last [d] = Some mprev ∧ is_witnessing_sequence_old m (d :: [] ++ [m]) β†’ is_witnessing_sequence_old mprev [d] ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' mprev)
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
mp:= ((rev l' ++ [x']) ++ [d0]) !! 1: option M
Heqmprev: mprev = rev (d0 :: x' :: l') !!! 1
Htot: rev (d0 :: x' :: l') !! 1 = Some mprev
Heq1: d :: d0 :: x' :: l' = d :: [] ++ [m]
Heqrev: S (S (length l')) = 0 ∨ S (S (length l')) = 1

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
lia.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
d1: M
l: list M
Heqrev: rev (tail (rev (d0 :: x' :: l'))) = d1 :: l
P: last (d :: d1 :: l) = Some mprev ∧ is_witnessing_sequence_old m (d :: (d1 :: l) ++ [m]) β†’ is_witnessing_sequence_old mprev (d :: d1 :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' mprev)
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
mp:= ((rev l' ++ [x']) ++ [d0]) !! 1: option M
Heqmprev: mprev = rev (d0 :: x' :: l') !!! 1
Htot: rev (d0 :: x' :: l') !! 1 = Some mprev
Heq1: d :: d0 :: x' :: l' = d :: (d1 :: l) ++ [m]

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
d1: M
l: list M
Heqrev: rev (tail (rev (d0 :: x' :: l'))) = d1 :: l
P: last (d :: d1 :: l) = Some mprev ∧ is_witnessing_sequence_old m (d :: (d1 :: l) ++ [m]) β†’ is_witnessing_sequence_old mprev (d :: d1 :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' mprev)
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
mp:= ((rev l' ++ [x']) ++ [d0]) !! 1: option M
Heqmprev: mprev = rev (d0 :: x' :: l') !!! 1
Htot: rev (d0 :: x' :: l') !! 1 = Some mprev
Heq1: d :: d0 :: x' :: l' = d :: d1 :: l ++ [m]

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
Hlen: S (length (d0 :: x' :: l')) ≀ S (S len)
Hwit': is_witnessing_sequence_old m (d :: d0 :: x' :: l')
d1: M
l: list M
Heqrev: rev (tail (rev (d0 :: x' :: l'))) = d1 :: l
P: last (d :: d1 :: l) = Some mprev ∧ is_witnessing_sequence_old m (d :: (d1 :: l) ++ [m]) β†’ is_witnessing_sequence_old mprev (d :: d1 :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' mprev)
H1: d0 ∈ app_ext (eval ρ step) {[d]}
H3: x' ∈ app_ext (eval ρ step) {[d0]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
mp:= ((rev l' ++ [x']) ++ [d0]) !! 1: option M
Heqmprev: mprev = rev (d0 :: x' :: l') !!! 1
Htot: rev (d0 :: x' :: l') !! 1 = Some mprev
Heq1: d :: d0 :: x' :: l' = d :: d1 :: l ++ [m]
H0: d0 = d1
H2: x' :: l' = l ++ [m]

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
d1: M
Hwit': is_witnessing_sequence_old m (d :: d1 :: x' :: l')
Hlen: S (length (d1 :: x' :: l')) ≀ S (S len)
l: list M
Heqrev: rev (tail (rev (d1 :: x' :: l'))) = d1 :: l
P: last (d :: d1 :: l) = Some mprev ∧ is_witnessing_sequence_old m (d :: (d1 :: l) ++ [m]) β†’ is_witnessing_sequence_old mprev (d :: d1 :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' mprev)
H3: x' ∈ app_ext (eval ρ step) {[d1]}
H1: d1 ∈ app_ext (eval ρ step) {[d]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
Heq1: d :: d1 :: x' :: l' = d :: d1 :: l ++ [m]
Htot: rev (d1 :: x' :: l') !! 1 = Some mprev
Heqmprev: mprev = rev (d1 :: x' :: l') !!! 1
mp:= ((rev l' ++ [x']) ++ [d1]) !! 1: option M
H2: x' :: l' = l ++ [m]

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
d1: M
Hwit': is_witnessing_sequence_old m (d :: d1 :: x' :: l')
Hlen: S (length (d1 :: x' :: l')) ≀ S (S len)
l: list M
Heqrev: rev (tail (rev (d1 :: x' :: l'))) = d1 :: l
P: last (d :: d1 :: l) = Some mprev ∧ is_witnessing_sequence_old m (d :: (d1 :: l) ++ [m]) β†’ is_witnessing_sequence_old mprev (d :: d1 :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' mprev)
H3: x' ∈ app_ext (eval ρ step) {[d1]}
H1: d1 ∈ app_ext (eval ρ step) {[d]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
Htot: rev (d1 :: x' :: l') !! 1 = Some mprev
Heqmprev: mprev = rev (d1 :: x' :: l') !!! 1
mp:= ((rev l' ++ [x']) ++ [d1]) !! 1: option M
H2: x' :: l' = l ++ [m]

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
d1: M
Hwit': is_witnessing_sequence_old m (d :: d1 :: x' :: l')
Hlen: S (length (d1 :: x' :: l')) ≀ S (S len)
l: list M
Heqrev: rev (tail (rev (d1 :: x' :: l'))) = d1 :: l
P: last (d1 :: l) = Some mprev ∧ is_witnessing_sequence_old m (d :: d1 :: l ++ [m]) β†’ is_witnessing_sequence_old mprev (d :: d1 :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' mprev)
H3: x' ∈ app_ext (eval ρ step) {[d1]}
H1: d1 ∈ app_ext (eval ρ step) {[d]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
Htot: rev (d1 :: x' :: l') !! 1 = Some mprev
Heqmprev: mprev = rev (d1 :: x' :: l') !!! 1
mp:= ((rev l' ++ [x']) ++ [d1]) !! 1: option M
H2: x' :: l' = l ++ [m]

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
d1: M
Hwit': is_witnessing_sequence_old m (d :: d1 :: x' :: l')
Hlen: S (length (d1 :: x' :: l')) ≀ S (S len)
l: list M
Heqrev: rev (tail (rev (d1 :: x' :: l'))) = d1 :: l
H3: x' ∈ app_ext (eval ρ step) {[d1]}
H1: d1 ∈ app_ext (eval ρ step) {[d]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
Htot: rev (d1 :: x' :: l') !! 1 = Some mprev
Heqmprev: mprev = rev (d1 :: x' :: l') !!! 1
mp:= ((rev l' ++ [x']) ++ [d1]) !! 1: option M
H2: x' :: l' = l ++ [m]
P: last (d1 :: l) = Some mprev ∧ is_witnessing_sequence_old m (d :: d1 :: x' :: l') β†’ is_witnessing_sequence_old mprev (d :: d1 :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' mprev)

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
d1: M
Hwit': is_witnessing_sequence_old m (d :: d1 :: x' :: l')
Hlen: S (length (d1 :: x' :: l')) ≀ S (S len)
l: list M
Heqrev: rev (tail (rev (d1 :: x' :: l'))) = d1 :: l
H3: x' ∈ app_ext (eval ρ step) {[d1]}
H1: d1 ∈ app_ext (eval ρ step) {[d]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
Htot: rev (d1 :: x' :: l') !! 1 = Some mprev
Heqmprev: mprev = rev (d1 :: x' :: l') !!! 1
mp:= ((rev l' ++ [x']) ++ [d1]) !! 1: option M
H2: x' :: l' = l ++ [m]
P: last (d1 :: l) = Some mprev ∧ is_witnessing_sequence_old m (d :: d1 :: x' :: l') β†’ is_witnessing_sequence_old mprev (d :: d1 :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' mprev)

match l with | [] => Some d1 | _ :: _ => last l end = Some mprev
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
d1: M
Hwit': is_witnessing_sequence_old m (d :: d1 :: x' :: l')
Hlen: S (length (d1 :: x' :: l')) ≀ S (S len)
l: list M
Heqrev: rev (tail (rev (d1 :: x' :: l'))) = d1 :: l
H3: x' ∈ app_ext (eval ρ step) {[d1]}
H1: d1 ∈ app_ext (eval ρ step) {[d]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
Htot: rev (d1 :: x' :: l') !! 1 = Some mprev
Heqmprev: mprev = rev (d1 :: x' :: l') !!! 1
mp:= ((rev l' ++ [x']) ++ [d1]) !! 1: option M
H2: x' :: l' = l ++ [m]
P: last (d1 :: l) = Some mprev ∧ is_witnessing_sequence_old m (d :: d1 :: x' :: l') β†’ is_witnessing_sequence_old mprev (d :: d1 :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' mprev)
Hm: match l with | [] => Some d1 | _ :: _ => last l end = Some mprev
m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
d1: M
Hwit': is_witnessing_sequence_old m (d :: d1 :: x' :: l')
Hlen: S (length (d1 :: x' :: l')) ≀ S (S len)
l: list M
Heqrev: rev (tail (rev (d1 :: x' :: l'))) = d1 :: l
H3: x' ∈ app_ext (eval ρ step) {[d1]}
H1: d1 ∈ app_ext (eval ρ step) {[d]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
Htot: rev (d1 :: x' :: l') !! 1 = Some mprev
Heqmprev: mprev = rev (d1 :: x' :: l') !!! 1
mp:= ((rev l' ++ [x']) ++ [d1]) !! 1: option M
H2: x' :: l' = l ++ [m]
P: last (d1 :: l) = Some mprev ∧ is_witnessing_sequence_old m (d :: d1 :: x' :: l') β†’ is_witnessing_sequence_old mprev (d :: d1 :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' mprev)

match l with | [] => Some d1 | _ :: _ => last l end = Some mprev
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
d1: M
Hwit': is_witnessing_sequence_old m (d :: d1 :: x' :: l')
Hlen: S (length (d1 :: x' :: l')) ≀ S (S len)
l: list M
Htot: rev (d1 :: x' :: l') !! 1 = Some mprev
Heqmprev: mprev = rev (d1 :: x' :: l') !!! 1
H2: x' :: l' = l ++ [m]

match l with | [] => Some d1 | _ :: _ => last l end = Some mprev
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
d1: M
Hwit': is_witnessing_sequence_old m (d :: d1 :: x' :: l')
Hlen: S (length (d1 :: x' :: l')) ≀ S (S len)
Htot: rev (d1 :: x' :: l') !! 1 = Some mprev
Heqmprev: mprev = rev (d1 :: x' :: l') !!! 1
H2: x' :: l' = [] ++ [m]

Some d1 = Some mprev
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
d1: M
Hwit': is_witnessing_sequence_old m (d :: d1 :: x' :: l')
Hlen: S (length (d1 :: x' :: l')) ≀ S (S len)
d0: M
l: list M
Htot: rev (d1 :: x' :: l') !! 1 = Some mprev
Heqmprev: mprev = rev (d1 :: x' :: l') !!! 1
H2: x' :: l' = (d0 :: l) ++ [m]
last (d0 :: l) = Some mprev
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
d1: M
Hwit': is_witnessing_sequence_old m (d :: d1 :: x' :: l')
Hlen: S (length (d1 :: x' :: l')) ≀ S (S len)
Htot: rev (d1 :: x' :: l') !! 1 = Some mprev
Heqmprev: mprev = rev (d1 :: x' :: l') !!! 1
H2: x' :: l' = [] ++ [m]

Some d1 = Some mprev
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
d1: M
Hwit': is_witnessing_sequence_old m (d :: d1 :: x' :: l')
Hlen: S (length (d1 :: x' :: l')) ≀ S (S len)
Htot: rev (d1 :: x' :: l') !! 1 = Some mprev
Heqmprev: mprev = rev (d1 :: x' :: l') !!! 1
H2: x' :: l' = [m]

Some d1 = Some mprev
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
d1: M
Hwit': is_witnessing_sequence_old m (d :: d1 :: x' :: l')
Hlen: S (length (d1 :: x' :: l')) ≀ S (S len)
Htot: rev (d1 :: x' :: l') !! 1 = Some mprev
Heqmprev: mprev = rev (d1 :: x' :: l') !!! 1
H2: x' :: l' = [m]
H0: x' = m
H1: l' = []

Some d1 = Some mprev
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
d1, m: M
IHlen: rev [d1; m] !!! 1 ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ rev [d1; m] !!! 1 ∈ eval ρ patt_ind_gen
d: M
Hlast: last [m] = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m [d; d1; m]
Hlen: S (length [d1; m]) ≀ S (S len)
Htot: rev [d1; m] !! 1 = Some (rev [d1; m] !!! 1)
H2: [m] = [m]

Some d1 = Some (rev [d1; m] !!! 1)
reflexivity.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
d1: M
Hwit': is_witnessing_sequence_old m (d :: d1 :: x' :: l')
Hlen: S (length (d1 :: x' :: l')) ≀ S (S len)
d0: M
l: list M
Htot: rev (d1 :: x' :: l') !! 1 = Some mprev
Heqmprev: mprev = rev (d1 :: x' :: l') !!! 1
H2: x' :: l' = (d0 :: l) ++ [m]

last (d0 :: l) = Some mprev
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
d1: M
Hwit': is_witnessing_sequence_old m (d :: d1 :: x' :: l')
Hlen: S (length (d1 :: x' :: l')) ≀ S (S len)
d0: M
l: list M
Htot: rev (d1 :: x' :: l') !! 1 = Some mprev
Heqmprev: mprev = rev (d1 :: x' :: l') !!! 1
H2: x' :: l' = (d0 :: l) ++ [m]

last (d0 :: l) = Some mprev
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
d1: M
Hwit': is_witnessing_sequence_old m (d :: d1 :: x' :: l')
Hlen: S (length (d1 :: x' :: l')) ≀ S (S len)
d0: M
l: list M
Htot: rev (d1 :: x' :: l') !! 1 = Some mprev
Heqmprev: mprev = rev (d1 :: x' :: l') !!! 1
H2: x' :: l' = d0 :: l ++ [m]

last (d0 :: l) = Some mprev
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
d1: M
Hwit': is_witnessing_sequence_old m (d :: d1 :: x' :: l')
Hlen: S (length (d1 :: x' :: l')) ≀ S (S len)
d0: M
l: list M
Htot: rev (d1 :: x' :: l') !! 1 = Some mprev
Heqmprev: mprev = rev (d1 :: x' :: l') !!! 1
H2: x' :: l' = d0 :: l ++ [m]
H0: x' = d0
H1: l' = l ++ [m]

last (d0 :: l) = Some mprev
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0: M
l: list M
d1: M
Htot: rev (d1 :: d0 :: l ++ [m]) !! 1 = Some mprev
Heqmprev: mprev = rev (d1 :: d0 :: l ++ [m]) !!! 1
H2: d0 :: l ++ [m] = d0 :: l ++ [m]
Hlast: last (d0 :: l ++ [m]) = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m (d :: d1 :: d0 :: l ++ [m])
Hlen: S (length (d1 :: d0 :: l ++ [m])) ≀ S (S len)

last (d0 :: l) = Some mprev
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0: M
l: list M
d1: M
Htot: rev (d1 :: d0 :: l ++ [m]) !! 1 = Some mprev
Heqmprev: mprev = rev (d1 :: d0 :: l ++ [m]) !!! 1
Hlast: last (d0 :: l ++ [m]) = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m (d :: d1 :: d0 :: l ++ [m])
Hlen: S (length (d1 :: d0 :: l ++ [m])) ≀ S (S len)

last (d0 :: l) = Some mprev
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0: M
l: list M
d1: M
Htot: ((rev (l ++ [m]) ++ [d0]) ++ [d1]) !! 1 = Some mprev
Heqmprev: mprev = rev (d1 :: d0 :: l ++ [m]) !!! 1
Hlast: last (d0 :: l ++ [m]) = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m (d :: d1 :: d0 :: l ++ [m])
Hlen: S (length (d1 :: d0 :: l ++ [m])) ≀ S (S len)

last (d0 :: l) = Some mprev
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0: M
l: list M
d1: M
Hcontra: l ++ [m] = []
Htot: ((rev [] ++ [d0]) ++ [d1]) !! 1 = Some mprev
Heqmprev: mprev = rev [d1; d0] !!! 1
Hlast: last [d0] = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m [d; d1; d0]
Hlen: S (length [d1; d0]) ≀ S (S len)

last (d0 :: l) = Some mprev
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0: M
l: list M
d1, d2: M
l0: list M
Hcontra: l ++ [m] = d2 :: l0
Htot: ((rev (d2 :: l0) ++ [d0]) ++ [d1]) !! 1 = Some mprev
Heqmprev: mprev = rev (d1 :: d0 :: d2 :: l0) !!! 1
Hlast: last (d0 :: d2 :: l0) = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m (d :: d1 :: d0 :: d2 :: l0)
Hlen: S (length (d1 :: d0 :: d2 :: l0)) ≀ S (S len)
last (d0 :: l) = Some mprev
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0: M
l: list M
d1: M
Hcontra: l ++ [m] = []
Htot: ((rev [] ++ [d0]) ++ [d1]) !! 1 = Some mprev
Heqmprev: mprev = rev [d1; d0] !!! 1
Hlast: last [d0] = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m [d; d1; d0]
Hlen: S (length [d1; d0]) ≀ S (S len)

last (d0 :: l) = Some mprev
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0: M
l: list M
d1: M
Hcontra: l ++ [m] = []
Htot: ((rev [] ++ [d0]) ++ [d1]) !! 1 = Some mprev
Heqmprev: mprev = rev [d1; d0] !!! 1
Hlast: last [d0] = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m [d; d1; d0]
Hlen: S (length [d1; d0]) ≀ S (S len)
Hcontra': length (l ++ [m]) = length l + length [m]

last (d0 :: l) = Some mprev
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0: M
l: list M
d1: M
Hcontra: l ++ [m] = []
Htot: ((rev [] ++ [d0]) ++ [d1]) !! 1 = Some mprev
Heqmprev: mprev = rev [d1; d0] !!! 1
Hlast: last [d0] = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m [d; d1; d0]
Hlen: S (length [d1; d0]) ≀ S (S len)
Hcontra': length [] = length l + length [m]

last (d0 :: l) = Some mprev
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0: M
l: list M
d1: M
Hcontra: l ++ [m] = []
Htot: ((rev [] ++ [d0]) ++ [d1]) !! 1 = Some mprev
Heqmprev: mprev = rev [d1; d0] !!! 1
Hlast: last [d0] = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m [d; d1; d0]
Hlen: S (length [d1; d0]) ≀ S (S len)
Hcontra': 0 = length l + 1

last (d0 :: l) = Some mprev
lia.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0: M
l: list M
d1, d2: M
l0: list M
Hcontra: l ++ [m] = d2 :: l0
Htot: ((rev (d2 :: l0) ++ [d0]) ++ [d1]) !! 1 = Some mprev
Heqmprev: mprev = rev (d1 :: d0 :: d2 :: l0) !!! 1
Hlast: last (d0 :: d2 :: l0) = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m (d :: d1 :: d0 :: d2 :: l0)
Hlen: S (length (d1 :: d0 :: d2 :: l0)) ≀ S (S len)

last (d0 :: l) = Some mprev
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0: M
l: list M
d1, d2: M
l0: list M
Hcontra: l ++ [m] = d2 :: l0
Heqmprev: mprev = rev (d1 :: d0 :: d2 :: l0) !!! 1
Hlast: last (d0 :: d2 :: l0) = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m (d :: d1 :: d0 :: d2 :: l0)
Hlen: S (length (d1 :: d0 :: d2 :: l0)) ≀ S (S len)
Htot: ((rev (l ++ [m]) ++ [d0]) ++ [d1]) !! 1 = Some mprev

last (d0 :: l) = Some mprev
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0: M
l: list M
d1, d2: M
l0: list M
Hcontra: l ++ [m] = d2 :: l0
Heqmprev: mprev = rev (d1 :: d0 :: d2 :: l0) !!! 1
Hlast: last (d0 :: d2 :: l0) = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m (d :: d1 :: d0 :: d2 :: l0)
Hlen: S (length (d1 :: d0 :: d2 :: l0)) ≀ S (S len)
Htot: (((rev [m] ++ rev l) ++ [d0]) ++ [d1]) !! 1 = Some mprev

last (d0 :: l) = Some mprev
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0: M
l: list M
d1, d2: M
l0: list M
Hcontra: l ++ [m] = d2 :: l0
Heqmprev: mprev = rev (d1 :: d0 :: d2 :: l0) !!! 1
Hlast: last (d0 :: d2 :: l0) = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m (d :: d1 :: d0 :: d2 :: l0)
Hlen: S (length (d1 :: d0 :: d2 :: l0)) ≀ S (S len)
Htot: ((rev l ++ [d0]) ++ [d1]) !! 0 = Some mprev

last (d0 :: l) = Some mprev
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0, d1, d2: M
l0: list M
Hcontra: [] ++ [m] = d2 :: l0
Heqmprev: mprev = rev (d1 :: d0 :: d2 :: l0) !!! 1
Hlast: last (d0 :: d2 :: l0) = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m (d :: d1 :: d0 :: d2 :: l0)
Hlen: S (length (d1 :: d0 :: d2 :: l0)) ≀ S (S len)
Htot: ((rev [] ++ [d0]) ++ [d1]) !! 0 = Some mprev

last [d0] = Some mprev
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0, d3: M
l: list M
d1, d2: M
l0: list M
Hcontra: (d3 :: l) ++ [m] = d2 :: l0
Heqmprev: mprev = rev (d1 :: d0 :: d2 :: l0) !!! 1
Hlast: last (d0 :: d2 :: l0) = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m (d :: d1 :: d0 :: d2 :: l0)
Hlen: S (length (d1 :: d0 :: d2 :: l0)) ≀ S (S len)
Htot: ((rev (d3 :: l) ++ [d0]) ++ [d1]) !! 0 = Some mprev
last (d0 :: d3 :: l) = Some mprev
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0, d1, d2: M
l0: list M
Hcontra: [] ++ [m] = d2 :: l0
Heqmprev: mprev = rev (d1 :: d0 :: d2 :: l0) !!! 1
Hlast: last (d0 :: d2 :: l0) = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m (d :: d1 :: d0 :: d2 :: l0)
Hlen: S (length (d1 :: d0 :: d2 :: l0)) ≀ S (S len)
Htot: ((rev [] ++ [d0]) ++ [d1]) !! 0 = Some mprev

last [d0] = Some mprev
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0, d1, d2: M
l0: list M
Hcontra: [] ++ [m] = d2 :: l0
Heqmprev: mprev = rev (d1 :: d0 :: d2 :: l0) !!! 1
Hlast: last (d0 :: d2 :: l0) = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m (d :: d1 :: d0 :: d2 :: l0)
Hlen: S (length (d1 :: d0 :: d2 :: l0)) ≀ S (S len)
Htot: Some d0 = Some mprev

last [d0] = Some mprev
apply Htot.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0, d3: M
l: list M
d1, d2: M
l0: list M
Hcontra: (d3 :: l) ++ [m] = d2 :: l0
Heqmprev: mprev = rev (d1 :: d0 :: d2 :: l0) !!! 1
Hlast: last (d0 :: d2 :: l0) = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m (d :: d1 :: d0 :: d2 :: l0)
Hlen: S (length (d1 :: d0 :: d2 :: l0)) ≀ S (S len)
Htot: ((rev (d3 :: l) ++ [d0]) ++ [d1]) !! 0 = Some mprev

last (d0 :: d3 :: l) = Some mprev
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0, d3: M
l: list M
d1, d2: M
l0: list M
Hcontra: (d3 :: l) ++ [m] = d2 :: l0
Heqmprev: mprev = rev (d1 :: d0 :: d2 :: l0) !!! 1
Hlast: last (d0 :: d2 :: l0) = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m (d :: d1 :: d0 :: d2 :: l0)
Hlen: S (length (d1 :: d0 :: d2 :: l0)) ≀ S (S len)
Htot: (((rev l ++ [d3]) ++ [d0]) ++ [d1]) !! 0 = Some mprev

last (d0 :: d3 :: l) = Some mprev
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0, d3: M
l: list M
d1, d2: M
l0: list M
Hcontra: (d3 :: l) ++ [m] = d2 :: l0
Heqmprev: mprev = rev (d1 :: d0 :: d2 :: l0) !!! 1
Hlast: last (d0 :: d2 :: l0) = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m (d :: d1 :: d0 :: d2 :: l0)
Hlen: S (length (d1 :: d0 :: d2 :: l0)) ≀ S (S len)
Htot: (((rev l ++ [d3]) ++ [d0]) ++ [d1]) !! 0 = Some mprev

last (d0 :: d3 :: l) = (((rev l ++ [d3]) ++ [d0]) ++ [d1]) !! 0
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0, d3: M
l: list M
d1, d2: M
l0: list M
Hcontra: (d3 :: l) ++ [m] = d2 :: l0
Heqmprev: mprev = rev (d1 :: d0 :: d2 :: l0) !!! 1
Hlast: last (d0 :: d2 :: l0) = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m (d :: d1 :: d0 :: d2 :: l0)
Hlen: S (length (d1 :: d0 :: d2 :: l0)) ≀ S (S len)
Htot: (((rev l ++ [d3]) ++ [d0]) ++ [d1]) !! 0 = Some mprev

last (d0 :: d3 :: l) = head (((rev l ++ [d3]) ++ [d0]) ++ [d1])
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0, d3: M
l: list M
d1, d2: M
l0: list M
Hcontra: (d3 :: l) ++ [m] = d2 :: l0
Heqmprev: mprev = rev (d1 :: d0 :: d2 :: l0) !!! 1
Hlast: last (d0 :: d2 :: l0) = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m (d :: d1 :: d0 :: d2 :: l0)
Hlen: S (length (d1 :: d0 :: d2 :: l0)) ≀ S (S len)
Htot: (((rev l ++ [d3]) ++ [d0]) ++ [d1]) !! 0 = Some mprev

last (d0 :: d3 :: l) = head ((rev l ++ [d3]) ++ [d0])
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0, d3: M
l: list M
d1, d2: M
l0: list M
Hcontra: (d3 :: l) ++ [m] = d2 :: l0
Heqmprev: mprev = rev (d1 :: d0 :: d2 :: l0) !!! 1
Hlast: last (d0 :: d2 :: l0) = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m (d :: d1 :: d0 :: d2 :: l0)
Hlen: S (length (d1 :: d0 :: d2 :: l0)) ≀ S (S len)
Htot: (((rev l ++ [d3]) ++ [d0]) ++ [d1]) !! 0 = Some mprev

last (d0 :: d3 :: l) = head (rev l ++ [d3])
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, d0, d3: M
l: list M
d1, d2: M
l0: list M
Hcontra: (d3 :: l) ++ [m] = d2 :: l0
Heqmprev: mprev = rev (d1 :: d0 :: d2 :: l0) !!! 1
Hlast: last (d0 :: d2 :: l0) = Some m
Hd: d ∈ eval ρ base
Hwit': is_witnessing_sequence_old m (d :: d1 :: d0 :: d2 :: l0)
Hlen: S (length (d1 :: d0 :: d2 :: l0)) ≀ S (S len)
Htot: (((rev l ++ [d3]) ++ [d0]) ++ [d1]) !! 0 = Some mprev

last (d3 :: l) = head (rev l ++ [d3])
apply last_rev_head.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
d1: M
Hwit': is_witnessing_sequence_old m (d :: d1 :: x' :: l')
Hlen: S (length (d1 :: x' :: l')) ≀ S (S len)
l: list M
Heqrev: rev (tail (rev (d1 :: x' :: l'))) = d1 :: l
H3: x' ∈ app_ext (eval ρ step) {[d1]}
H1: d1 ∈ app_ext (eval ρ step) {[d]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
Htot: rev (d1 :: x' :: l') !! 1 = Some mprev
Heqmprev: mprev = rev (d1 :: x' :: l') !!! 1
mp:= ((rev l' ++ [x']) ++ [d1]) !! 1: option M
H2: x' :: l' = l ++ [m]
P: last (d1 :: l) = Some mprev ∧ is_witnessing_sequence_old m (d :: d1 :: x' :: l') β†’ is_witnessing_sequence_old mprev (d :: d1 :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' mprev)
Hm: match l with | [] => Some d1 | _ :: _ => last l end = Some mprev

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
d1: M
Hwit': is_witnessing_sequence_old m (d :: d1 :: x' :: l')
Hlen: S (length (d1 :: x' :: l')) ≀ S (S len)
l: list M
Heqrev: rev (tail (rev (d1 :: x' :: l'))) = d1 :: l
H3: x' ∈ app_ext (eval ρ step) {[d1]}
H1: d1 ∈ app_ext (eval ρ step) {[d]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
Htot: rev (d1 :: x' :: l') !! 1 = Some mprev
Heqmprev: mprev = rev (d1 :: x' :: l') !!! 1
mp:= ((rev l' ++ [x']) ++ [d1]) !! 1: option M
H2: x' :: l' = l ++ [m]
P: is_witnessing_sequence_old mprev (d :: d1 :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' mprev)
Hm: match l with | [] => Some d1 | _ :: _ => last l end = Some mprev

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
d1: M
Hlen: S (length (d1 :: x' :: l')) ≀ S (S len)
l: list M
Heqrev: rev (tail (rev (d1 :: x' :: l'))) = d1 :: l
H3: x' ∈ app_ext (eval ρ step) {[d1]}
H1: d1 ∈ app_ext (eval ρ step) {[d]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
Htot: rev (d1 :: x' :: l') !! 1 = Some mprev
Heqmprev: mprev = rev (d1 :: x' :: l') !!! 1
mp:= ((rev l' ++ [x']) ++ [d1]) !! 1: option M
H2: x' :: l' = l ++ [m]
P: is_witnessing_sequence_old mprev (d :: d1 :: l) ∧ (βˆƒ step' : M, step' ∈ eval ρ step ∧ m ∈ app_interp M step' mprev)

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
d1: M
Hlen: S (length (d1 :: x' :: l')) ≀ S (S len)
l: list M
Heqrev: rev (tail (rev (d1 :: x' :: l'))) = d1 :: l
H3: x' ∈ app_ext (eval ρ step) {[d1]}
H1: d1 ∈ app_ext (eval ρ step) {[d]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
Htot: rev (d1 :: x' :: l') !! 1 = Some mprev
Heqmprev: mprev = rev (d1 :: x' :: l') !!! 1
mp:= ((rev l' ++ [x']) ++ [d1]) !! 1: option M
H2: x' :: l' = l ++ [m]
Hwitmprev: is_witnessing_sequence_old mprev (d :: d1 :: l)
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' mprev

m ∈ app_ext (eval ρ step) (eval ρ patt_ind_gen)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
d1: M
Hlen: S (length (d1 :: x' :: l')) ≀ S (S len)
l: list M
Heqrev: rev (tail (rev (d1 :: x' :: l'))) = d1 :: l
H3: x' ∈ app_ext (eval ρ step) {[d1]}
H1: d1 ∈ app_ext (eval ρ step) {[d]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
Htot: rev (d1 :: x' :: l') !! 1 = Some mprev
Heqmprev: mprev = rev (d1 :: x' :: l') !!! 1
mp:= ((rev l' ++ [x']) ++ [d1]) !! 1: option M
H2: x' :: l' = l ++ [m]
Hwitmprev: is_witnessing_sequence_old mprev (d :: d1 :: l)
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' mprev

βˆƒ re : M, step' ∈ eval ρ step ∧ re ∈ eval ρ patt_ind_gen ∧ m ∈ app_interp M step' re
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
d1: M
Hlen: S (length (d1 :: x' :: l')) ≀ S (S len)
l: list M
Heqrev: rev (tail (rev (d1 :: x' :: l'))) = d1 :: l
H3: x' ∈ app_ext (eval ρ step) {[d1]}
H1: d1 ∈ app_ext (eval ρ step) {[d]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
Htot: rev (d1 :: x' :: l') !! 1 = Some mprev
Heqmprev: mprev = rev (d1 :: x' :: l') !!! 1
mp:= ((rev l' ++ [x']) ++ [d1]) !! 1: option M
H2: x' :: l' = l ++ [m]
Hwitmprev: is_witnessing_sequence_old mprev (d :: d1 :: l)
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' mprev

step' ∈ eval ρ step ∧ mprev ∈ eval ρ patt_ind_gen ∧ m ∈ app_interp M step' mprev
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
d1: M
Hlen: S (length (d1 :: x' :: l')) ≀ S (S len)
l: list M
Heqrev: rev (tail (rev (d1 :: x' :: l'))) = d1 :: l
H3: x' ∈ app_ext (eval ρ step) {[d1]}
H1: d1 ∈ app_ext (eval ρ step) {[d]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
Htot: rev (d1 :: x' :: l') !! 1 = Some mprev
Heqmprev: mprev = rev (d1 :: x' :: l') !!! 1
mp:= ((rev l' ++ [x']) ++ [d1]) !! 1: option M
H2: x' :: l' = l ++ [m]
Hwitmprev: is_witnessing_sequence_old mprev (d :: d1 :: l)
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' mprev

step' ∈ eval ρ step
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
d1: M
Hlen: S (length (d1 :: x' :: l')) ≀ S (S len)
l: list M
Heqrev: rev (tail (rev (d1 :: x' :: l'))) = d1 :: l
H3: x' ∈ app_ext (eval ρ step) {[d1]}
H1: d1 ∈ app_ext (eval ρ step) {[d]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
Htot: rev (d1 :: x' :: l') !! 1 = Some mprev
Heqmprev: mprev = rev (d1 :: x' :: l') !!! 1
mp:= ((rev l' ++ [x']) ++ [d1]) !! 1: option M
H2: x' :: l' = l ++ [m]
Hwitmprev: is_witnessing_sequence_old mprev (d :: d1 :: l)
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' mprev
mprev ∈ eval ρ patt_ind_gen ∧ m ∈ app_interp M step' mprev
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
d1: M
Hlen: S (length (d1 :: x' :: l')) ≀ S (S len)
l: list M
Heqrev: rev (tail (rev (d1 :: x' :: l'))) = d1 :: l
H3: x' ∈ app_ext (eval ρ step) {[d1]}
H1: d1 ∈ app_ext (eval ρ step) {[d]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
Htot: rev (d1 :: x' :: l') !! 1 = Some mprev
Heqmprev: mprev = rev (d1 :: x' :: l') !!! 1
mp:= ((rev l' ++ [x']) ++ [d1]) !! 1: option M
H2: x' :: l' = l ++ [m]
Hwitmprev: is_witnessing_sequence_old mprev (d :: d1 :: l)
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' mprev

step' ∈ eval ρ step
apply Hstep'.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
d1: M
Hlen: S (length (d1 :: x' :: l')) ≀ S (S len)
l: list M
Heqrev: rev (tail (rev (d1 :: x' :: l'))) = d1 :: l
H3: x' ∈ app_ext (eval ρ step) {[d1]}
H1: d1 ∈ app_ext (eval ρ step) {[d]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
Htot: rev (d1 :: x' :: l') !! 1 = Some mprev
Heqmprev: mprev = rev (d1 :: x' :: l') !!! 1
mp:= ((rev l' ++ [x']) ++ [d1]) !! 1: option M
H2: x' :: l' = l ++ [m]
Hwitmprev: is_witnessing_sequence_old mprev (d :: d1 :: l)
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' mprev

mprev ∈ eval ρ patt_ind_gen ∧ m ∈ app_interp M step' mprev
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
d1: M
Hlen: S (length (d1 :: x' :: l')) ≀ S (S len)
l: list M
Heqrev: rev (tail (rev (d1 :: x' :: l'))) = d1 :: l
H3: x' ∈ app_ext (eval ρ step) {[d1]}
H1: d1 ∈ app_ext (eval ρ step) {[d]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
Htot: rev (d1 :: x' :: l') !! 1 = Some mprev
Heqmprev: mprev = rev (d1 :: x' :: l') !!! 1
mp:= ((rev l' ++ [x']) ++ [d1]) !! 1: option M
H2: x' :: l' = l ++ [m]
Hwitmprev: is_witnessing_sequence_old mprev (d :: d1 :: l)
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' mprev

mprev ∈ eval ρ patt_ind_gen
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
d1: M
Hlen: S (length (d1 :: x' :: l')) ≀ S (S len)
l: list M
Heqrev: rev (tail (rev (d1 :: x' :: l'))) = d1 :: l
H3: x' ∈ app_ext (eval ρ step) {[d1]}
H1: d1 ∈ app_ext (eval ρ step) {[d]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
Htot: rev (d1 :: x' :: l') !! 1 = Some mprev
Heqmprev: mprev = rev (d1 :: x' :: l') !!! 1
mp:= ((rev l' ++ [x']) ++ [d1]) !! 1: option M
H2: x' :: l' = l ++ [m]
Hwitmprev: is_witnessing_sequence_old mprev (d :: d1 :: l)
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' mprev
m ∈ app_interp M step' mprev
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
d1: M
Hlen: S (length (d1 :: x' :: l')) ≀ S (S len)
l: list M
Heqrev: rev (tail (rev (d1 :: x' :: l'))) = d1 :: l
H3: x' ∈ app_ext (eval ρ step) {[d1]}
H1: d1 ∈ app_ext (eval ρ step) {[d]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
Htot: rev (d1 :: x' :: l') !! 1 = Some mprev
Heqmprev: mprev = rev (d1 :: x' :: l') !!! 1
mp:= ((rev l' ++ [x']) ++ [d1]) !! 1: option M
H2: x' :: l' = l ++ [m]
Hwitmprev: is_witnessing_sequence_old mprev (d :: d1 :: l)
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' mprev

m ∈ app_interp M step' mprev
apply Hm.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
d1: M
Hlen: S (length (d1 :: x' :: l')) ≀ S (S len)
l: list M
Heqrev: rev (tail (rev (d1 :: x' :: l'))) = d1 :: l
H3: x' ∈ app_ext (eval ρ step) {[d1]}
H1: d1 ∈ app_ext (eval ρ step) {[d]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
Htot: rev (d1 :: x' :: l') !! 1 = Some mprev
Heqmprev: mprev = rev (d1 :: x' :: l') !!! 1
mp:= ((rev l' ++ [x']) ++ [d1]) !! 1: option M
H2: x' :: l' = l ++ [m]
Hwitmprev: is_witnessing_sequence_old mprev (d :: d1 :: l)
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' mprev

mprev ∈ eval ρ patt_ind_gen
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
d1: M
Hlen: S (length (d1 :: x' :: l')) ≀ S (S len)
l: list M
Heqrev: rev (tail (rev (d1 :: x' :: l'))) = d1 :: l
H3: x' ∈ app_ext (eval ρ step) {[d1]}
H1: d1 ∈ app_ext (eval ρ step) {[d]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
Htot: rev (d1 :: x' :: l') !! 1 = Some mprev
Heqmprev: mprev = rev (d1 :: x' :: l') !!! 1
mp:= ((rev l' ++ [x']) ++ [d1]) !! 1: option M
H2: x' :: l' = l ++ [m]
Hwitmprev: is_witnessing_sequence_old mprev (d :: d1 :: l)
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' mprev

mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]}
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
d1: M
Hlen: S (length (d1 :: x' :: l')) ≀ S (S len)
l: list M
Heqrev: rev (tail (rev (d1 :: x' :: l'))) = d1 :: l
H3: x' ∈ app_ext (eval ρ step) {[d1]}
H1: d1 ∈ app_ext (eval ρ step) {[d]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
Htot: rev (d1 :: x' :: l') !! 1 = Some mprev
Heqmprev: mprev = rev (d1 :: x' :: l') !!! 1
mp:= ((rev l' ++ [x']) ++ [d1]) !! 1: option M
H2: x' :: l' = l ++ [m]
Hwitmprev: is_witnessing_sequence_old mprev (d :: d1 :: l)
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' mprev

is_witnessing_sequence_old mprev (d :: d1 :: l) ∧ length (d :: d1 :: l) ≀ S len
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
d1: M
Hlen: S (length (d1 :: x' :: l')) ≀ S (S len)
l: list M
Heqrev: rev (tail (rev (d1 :: x' :: l'))) = d1 :: l
H3: x' ∈ app_ext (eval ρ step) {[d1]}
H1: d1 ∈ app_ext (eval ρ step) {[d]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
Htot: rev (d1 :: x' :: l') !! 1 = Some mprev
Heqmprev: mprev = rev (d1 :: x' :: l') !!! 1
mp:= ((rev l' ++ [x']) ++ [d1]) !! 1: option M
H2: x' :: l' = l ++ [m]
Hwitmprev: is_witnessing_sequence_old mprev (d :: d1 :: l)
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' mprev

is_witnessing_sequence_old mprev (d :: d1 :: l)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
d1: M
Hlen: S (length (d1 :: x' :: l')) ≀ S (S len)
l: list M
Heqrev: rev (tail (rev (d1 :: x' :: l'))) = d1 :: l
H3: x' ∈ app_ext (eval ρ step) {[d1]}
H1: d1 ∈ app_ext (eval ρ step) {[d]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
Htot: rev (d1 :: x' :: l') !! 1 = Some mprev
Heqmprev: mprev = rev (d1 :: x' :: l') !!! 1
mp:= ((rev l' ++ [x']) ++ [d1]) !! 1: option M
H2: x' :: l' = l ++ [m]
Hwitmprev: is_witnessing_sequence_old mprev (d :: d1 :: l)
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' mprev
length (d :: d1 :: l) ≀ S len
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
d1: M
Hlen: S (length (d1 :: x' :: l')) ≀ S (S len)
l: list M
Heqrev: rev (tail (rev (d1 :: x' :: l'))) = d1 :: l
H3: x' ∈ app_ext (eval ρ step) {[d1]}
H1: d1 ∈ app_ext (eval ρ step) {[d]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
Htot: rev (d1 :: x' :: l') !! 1 = Some mprev
Heqmprev: mprev = rev (d1 :: x' :: l') !!! 1
mp:= ((rev l' ++ [x']) ++ [d1]) !! 1: option M
H2: x' :: l' = l ++ [m]
Hwitmprev: is_witnessing_sequence_old mprev (d :: d1 :: l)
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' mprev

is_witnessing_sequence_old mprev (d :: d1 :: l)
apply Hwitmprev.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
d1: M
Hlen: S (length (d1 :: x' :: l')) ≀ S (S len)
l: list M
Heqrev: rev (tail (rev (d1 :: x' :: l'))) = d1 :: l
H3: x' ∈ app_ext (eval ρ step) {[d1]}
H1: d1 ∈ app_ext (eval ρ step) {[d]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
Htot: rev (d1 :: x' :: l') !! 1 = Some mprev
Heqmprev: mprev = rev (d1 :: x' :: l') !!! 1
mp:= ((rev l' ++ [x']) ++ [d1]) !! 1: option M
H2: x' :: l' = l ++ [m]
Hwitmprev: is_witnessing_sequence_old mprev (d :: d1 :: l)
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' mprev

length (d :: d1 :: l) ≀ S len
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
d1: M
Hlen: S (length (d1 :: x' :: l')) ≀ S (S len)
l: list M
Heqrev: rev (tail (rev (d1 :: x' :: l'))) = d1 :: l
H3: x' ∈ app_ext (eval ρ step) {[d1]}
H1: d1 ∈ app_ext (eval ρ step) {[d]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
Htot: rev (d1 :: x' :: l') !! 1 = Some mprev
Heqmprev: mprev = rev (d1 :: x' :: l') !!! 1
mp:= ((rev l' ++ [x']) ++ [d1]) !! 1: option M
H2: x' :: l' = l ++ [m]
Hwitmprev: is_witnessing_sequence_old mprev (d :: d1 :: l)
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' mprev

S (S (length l)) ≀ S len
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
d1: M
Hlen: S (S (S (length l'))) ≀ S (S len)
l: list M
Heqrev: rev (tail (rev (d1 :: x' :: l'))) = d1 :: l
H3: x' ∈ app_ext (eval ρ step) {[d1]}
H1: d1 ∈ app_ext (eval ρ step) {[d]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
Htot: rev (d1 :: x' :: l') !! 1 = Some mprev
Heqmprev: mprev = rev (d1 :: x' :: l') !!! 1
mp:= ((rev l' ++ [x']) ++ [d1]) !! 1: option M
H2: x' :: l' = l ++ [m]
Hwitmprev: is_witnessing_sequence_old mprev (d :: d1 :: l)
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' mprev

S (S (length l)) ≀ S len
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
d1: M
Hlen: S (S (S (length l'))) ≀ S (S len)
l: list M
Heqrev: rev (tail (rev (d1 :: x' :: l'))) = d1 :: l
H3: x' ∈ app_ext (eval ρ step) {[d1]}
H1: d1 ∈ app_ext (eval ρ step) {[d]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
Htot: rev (d1 :: x' :: l') !! 1 = Some mprev
Heqmprev: mprev = rev (d1 :: x' :: l') !!! 1
mp:= ((rev l' ++ [x']) ++ [d1]) !! 1: option M
H2: x' :: l' = l ++ [m]
Hwitmprev: is_witnessing_sequence_old mprev (d :: d1 :: l)
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' mprev

S (length l') ≀ len
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
d1: M
Hlen: S (S (S (length l'))) ≀ S (S len)
l: list M
Heqrev: rev (tail (rev (d1 :: x' :: l'))) = d1 :: l
H3: x' ∈ app_ext (eval ρ step) {[d1]}
H1: d1 ∈ app_ext (eval ρ step) {[d]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
Htot: rev (d1 :: x' :: l') !! 1 = Some mprev
Heqmprev: mprev = rev (d1 :: x' :: l') !!! 1
mp:= ((rev l' ++ [x']) ++ [d1]) !! 1: option M
H2: x' :: l' = l ++ [m]
Hwitmprev: is_witnessing_sequence_old mprev (d :: d1 :: l)
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' mprev
Hlen': S (length l') ≀ len
S (S (length l)) ≀ S len
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
d1: M
Hlen: S (S (S (length l'))) ≀ S (S len)
l: list M
Heqrev: rev (tail (rev (d1 :: x' :: l'))) = d1 :: l
H3: x' ∈ app_ext (eval ρ step) {[d1]}
H1: d1 ∈ app_ext (eval ρ step) {[d]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
Htot: rev (d1 :: x' :: l') !! 1 = Some mprev
Heqmprev: mprev = rev (d1 :: x' :: l') !!! 1
mp:= ((rev l' ++ [x']) ++ [d1]) !! 1: option M
H2: x' :: l' = l ++ [m]
Hwitmprev: is_witnessing_sequence_old mprev (d :: d1 :: l)
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' mprev

S (length l') ≀ len
lia.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
d1: M
Hlen: S (S (S (length l'))) ≀ S (S len)
l: list M
Heqrev: rev (tail (rev (d1 :: x' :: l'))) = d1 :: l
H3: x' ∈ app_ext (eval ρ step) {[d1]}
H1: d1 ∈ app_ext (eval ρ step) {[d]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
Htot: rev (d1 :: x' :: l') !! 1 = Some mprev
Heqmprev: mprev = rev (d1 :: x' :: l') !!! 1
mp:= ((rev l' ++ [x']) ++ [d1]) !! 1: option M
H2: x' :: l' = l ++ [m]
Hwitmprev: is_witnessing_sequence_old mprev (d :: d1 :: l)
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' mprev
Hlen': S (length l') ≀ len

S (S (length l)) ≀ S len
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
d1: M
Hlen: S (S (S (length l'))) ≀ S (S len)
l: list M
Heqrev: rev (tail (rev (d1 :: x' :: l'))) = d1 :: l
H3: x' ∈ app_ext (eval ρ step) {[d1]}
H1: d1 ∈ app_ext (eval ρ step) {[d]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
Htot: rev (d1 :: x' :: l') !! 1 = Some mprev
Heqmprev: mprev = rev (d1 :: x' :: l') !!! 1
mp:= ((rev l' ++ [x']) ++ [d1]) !! 1: option M
H2: x' :: l' = l ++ [m]
Hwitmprev: is_witnessing_sequence_old mprev (d :: d1 :: l)
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' mprev
Hlen': S (length l') ≀ len

length l' = length l
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
d1: M
Hlen: S (S (S (length l'))) ≀ S (S len)
l: list M
Heqrev: rev (tail (rev (d1 :: x' :: l'))) = d1 :: l
H3: x' ∈ app_ext (eval ρ step) {[d1]}
H1: d1 ∈ app_ext (eval ρ step) {[d]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
Htot: rev (d1 :: x' :: l') !! 1 = Some mprev
Heqmprev: mprev = rev (d1 :: x' :: l') !!! 1
mp:= ((rev l' ++ [x']) ++ [d1]) !! 1: option M
H2: x' :: l' = l ++ [m]
Hwitmprev: is_witnessing_sequence_old mprev (d :: d1 :: l)
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' mprev
Hlen': S (length l') ≀ len
H: length l' = length l
S (S (length l)) ≀ S len
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
d1: M
Hlen: S (S (S (length l'))) ≀ S (S len)
l: list M
Heqrev: rev (tail (rev (d1 :: x' :: l'))) = d1 :: l
H3: x' ∈ app_ext (eval ρ step) {[d1]}
H1: d1 ∈ app_ext (eval ρ step) {[d]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
Htot: rev (d1 :: x' :: l') !! 1 = Some mprev
Heqmprev: mprev = rev (d1 :: x' :: l') !!! 1
mp:= ((rev l' ++ [x']) ++ [d1]) !! 1: option M
H2: x' :: l' = l ++ [m]
Hwitmprev: is_witnessing_sequence_old mprev (d :: d1 :: l)
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' mprev
Hlen': S (length l') ≀ len

length l' = length l
apply (@list_len_slice _ _ _ _ _ H2).
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
d1: M
Hlen: S (S (S (length l'))) ≀ S (S len)
l: list M
Heqrev: rev (tail (rev (d1 :: x' :: l'))) = d1 :: l
H3: x' ∈ app_ext (eval ρ step) {[d1]}
H1: d1 ∈ app_ext (eval ρ step) {[d]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
Htot: rev (d1 :: x' :: l') !! 1 = Some mprev
Heqmprev: mprev = rev (d1 :: x' :: l') !!! 1
mp:= ((rev l' ++ [x']) ++ [d1]) !! 1: option M
H2: x' :: l' = l ++ [m]
Hwitmprev: is_witnessing_sequence_old mprev (d :: d1 :: l)
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' mprev
Hlen': S (length l') ≀ len
H: length l' = length l

S (S (length l)) ≀ S len
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
len: nat
mprev: M
IHlen: mprev ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ∧ length l ≀ S len ]} β†’ mprev ∈ eval ρ patt_ind_gen
m, d, x': M
l': list M
Hlast: last (x' :: l') = Some m
Hd: d ∈ eval ρ base
d1: M
Hlen: S (S (S (length l'))) ≀ S (S len)
l: list M
Heqrev: rev (tail (rev (d1 :: x' :: l'))) = d1 :: l
H3: x' ∈ app_ext (eval ρ step) {[d1]}
H1: d1 ∈ app_ext (eval ρ step) {[d]}
H4: Forall (λ x : M * M, let (old, new) := x in new ∈ app_ext (eval ρ step) {[old]}) match l' with | [] => [] | x2 :: l2 => (x', x2) :: zip l' l2 end
Htot: rev (d1 :: x' :: l') !! 1 = Some mprev
Heqmprev: mprev = rev (d1 :: x' :: l') !!! 1
mp:= ((rev l' ++ [x']) ++ [d1]) !! 1: option M
H2: x' :: l' = l ++ [m]
Hwitmprev: is_witnessing_sequence_old mprev (d :: d1 :: l)
step': M
Hstep': step' ∈ eval ρ step
Hm: m ∈ app_interp M step' mprev
Hlen': S (length l') ≀ len
H: length l' = length l

S (S (length l')) ≀ S len
lia. Qed.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M

witnessed_elements_old βŠ† eval ρ patt_ind_gen
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M

witnessed_elements_old βŠ† eval ρ patt_ind_gen
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
H: x ∈ witnessed_elements_old

x ∈ eval ρ patt_ind_gen
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
H: x ∈ witnessed_elements_old

x ∈ eval ρ patt_ind_gen
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
H: x ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ]}

x ∈ eval ρ patt_ind_gen
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
wit: list M
Hwit: is_witnessing_sequence_old x wit

x ∈ eval ρ patt_ind_gen
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
wit: list M
Hwit: is_witnessing_sequence_old x wit

x ∈ witnessed_elements_old_of_max_len (length wit)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
wit: list M
Hwit: is_witnessing_sequence_old x wit
H': x ∈ witnessed_elements_old_of_max_len (length wit)
x ∈ eval ρ patt_ind_gen
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
wit: list M
Hwit: is_witnessing_sequence_old x wit

x ∈ witnessed_elements_old_of_max_len (length wit)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
wit: list M
Hwit: is_witnessing_sequence_old x wit

x ∈ witnessed_elements_old_of_max_len (length wit)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
wit: list M
Hwit: is_witnessing_sequence_old x wit

is_witnessing_sequence_old x wit ∧ length wit ≀ length wit
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
wit: list M
Hwit: is_witnessing_sequence_old x wit

is_witnessing_sequence_old x wit
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
wit: list M
Hwit: is_witnessing_sequence_old x wit
length wit ≀ length wit
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
wit: list M
Hwit: is_witnessing_sequence_old x wit

length wit ≀ length wit
lia.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
wit: list M
Hwit: is_witnessing_sequence_old x wit
H': x ∈ witnessed_elements_old_of_max_len (length wit)

x ∈ eval ρ patt_ind_gen
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
wit: list M
Hl: wit = []
Hwit: is_witnessing_sequence_old x []
H': x ∈ witnessed_elements_old_of_max_len (length [])

x ∈ eval ρ patt_ind_gen
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
wit: list M
y: M
l': list M
Hl: wit = y :: l'
Hwit: is_witnessing_sequence_old x (y :: l')
H': x ∈ witnessed_elements_old_of_max_len (length (y :: l'))
x ∈ eval ρ patt_ind_gen
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
wit: list M
Hl: wit = []
Hwit: is_witnessing_sequence_old x []
H': x ∈ witnessed_elements_old_of_max_len (length [])

x ∈ eval ρ patt_ind_gen
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
wit: list M
Hl: wit = []
Hwit: is_witnessing_sequence_old x []
H': x ∈ witnessed_elements_old_of_max_len (length [])

x ∈ eval ρ patt_ind_gen
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
wit: list M
Hl: wit = []
H: last [] = Some x
H0: False
H': x ∈ witnessed_elements_old_of_max_len (length [])

x ∈ eval ρ patt_ind_gen
contradiction.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
wit: list M
y: M
l': list M
Hl: wit = y :: l'
Hwit: is_witnessing_sequence_old x (y :: l')
H': x ∈ witnessed_elements_old_of_max_len (length (y :: l'))

x ∈ eval ρ patt_ind_gen
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
wit: list M
y: M
l': list M
Hl: wit = y :: l'
Hwit: is_witnessing_sequence_old x (y :: l')
H': x ∈ witnessed_elements_old_of_max_len (length (y :: l'))

x ∈ witnessed_elements_old_of_max_len (S ?len)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
x: M
wit: list M
y: M
l': list M
Hl: wit = y :: l'
Hwit: is_witnessing_sequence_old x (y :: l')
H': x ∈ witnessed_elements_old_of_max_len (S (length l'))

x ∈ witnessed_elements_old_of_max_len (S ?len)
apply H'. Qed. Definition witnessed_elements : propset (Domain M) := PropSet (Ξ» m, βˆƒ l, is_witnessing_sequence m l).
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M

witnessed_elements_old = witnessed_elements
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M

witnessed_elements_old = witnessed_elements
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M

witnessed_elements_old βŠ† witnessed_elements βŠ† witnessed_elements_old
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M

(βˆ€ x : M, x ∈ witnessed_elements_old β†’ x ∈ witnessed_elements) ∧ (βˆ€ x : M, x ∈ witnessed_elements β†’ x ∈ witnessed_elements_old)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
H: is_witnessing_sequence_old m l

m ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence m l ]}
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
H: is_witnessing_sequence m l
m ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ]}
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
H: is_witnessing_sequence_old m l

m ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence m l ]}
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
H: is_witnessing_sequence_old m l

is_witnessing_sequence m (reverse l)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
H: is_witnessing_sequence_old m l

is_witnessing_sequence_old m (reverse (reverse l))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
H: is_witnessing_sequence_old m l

is_witnessing_sequence_old m l
exact H.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
H: is_witnessing_sequence m l

m ∈ {[ m | βˆƒ l : list M, is_witnessing_sequence_old m l ]}
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
H: is_witnessing_sequence m l

is_witnessing_sequence_old m (reverse l)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
m: M
l: list M
H: is_witnessing_sequence m l

is_witnessing_sequence m l
apply H. Qed.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M

eval ρ patt_ind_gen = witnessed_elements
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M

eval ρ patt_ind_gen = witnessed_elements
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M

eval ρ patt_ind_gen = witnessed_elements_old
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M

eval ρ patt_ind_gen βŠ† witnessed_elements_old βŠ† eval ρ patt_ind_gen
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M

eval ρ patt_ind_gen βŠ† witnessed_elements_old
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
witnessed_elements_old βŠ† eval ρ patt_ind_gen
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M

eval ρ patt_ind_gen βŠ† witnessed_elements_old
apply interp_included_in_witnessed_elements_old.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M

witnessed_elements_old βŠ† eval ρ patt_ind_gen
apply witnessed_elements_old_included_in_interp. Qed. Section injective. Hypothesis (Domain_eq_dec : EqDecision (Domain M)). Hypothesis (Hstep_total_function : @is_total_function _ M step witnessed_elements witnessed_elements ρ). Hypothesis (Hstep_injective : @total_function_is_injective _ M step witnessed_elements ρ). Hypothesis (Hbase_step_no_confusion : (eval ρ base) ∩ (app_ext (eval ρ step) witnessed_elements) = βˆ…).
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…

βˆ€ (m : M) (l₁ lβ‚‚ : list M), is_witnessing_sequence m l₁ β†’ is_witnessing_sequence m lβ‚‚ β†’ l₁ = lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…

βˆ€ (m : M) (l₁ lβ‚‚ : list M), is_witnessing_sequence m l₁ β†’ is_witnessing_sequence m lβ‚‚ β†’ l₁ = lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M

is_witnessing_sequence m l₁ β†’ is_witnessing_sequence m lβ‚‚ β†’ l₁ = lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M

(βˆ€ l₁ lβ‚‚ : list M, length lβ‚‚ ≀ length l₁ β†’ is_witnessing_sequence m l₁ β†’ is_witnessing_sequence m lβ‚‚ β†’ l₁ = lβ‚‚) β†’ is_witnessing_sequence m l₁ β†’ is_witnessing_sequence m lβ‚‚ β†’ l₁ = lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
length lβ‚‚ ≀ length l₁ β†’ is_witnessing_sequence m l₁ β†’ is_witnessing_sequence m lβ‚‚ β†’ l₁ = lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M

(βˆ€ l₁ lβ‚‚ : list M, length lβ‚‚ ≀ length l₁ β†’ is_witnessing_sequence m l₁ β†’ is_witnessing_sequence m lβ‚‚ β†’ l₁ = lβ‚‚) β†’ is_witnessing_sequence m l₁ β†’ is_witnessing_sequence m lβ‚‚ β†’ l₁ = lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
H: βˆ€ l₁ lβ‚‚ : list M, length lβ‚‚ ≀ length l₁ β†’ is_witnessing_sequence m l₁ β†’ is_witnessing_sequence m lβ‚‚ β†’ l₁ = lβ‚‚
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚

l₁ = lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
H: βˆ€ l₁ lβ‚‚ : list M, length lβ‚‚ ≀ length l₁ β†’ is_witnessing_sequence m l₁ β†’ is_witnessing_sequence m lβ‚‚ β†’ l₁ = lβ‚‚
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
l: length l₁ ≀ length lβ‚‚

l₁ = lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
H: βˆ€ l₁ lβ‚‚ : list M, length lβ‚‚ ≀ length l₁ β†’ is_witnessing_sequence m l₁ β†’ is_witnessing_sequence m lβ‚‚ β†’ l₁ = lβ‚‚
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
n: Β¬ length l₁ ≀ length lβ‚‚
l₁ = lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
H: βˆ€ l₁ lβ‚‚ : list M, length lβ‚‚ ≀ length l₁ β†’ is_witnessing_sequence m l₁ β†’ is_witnessing_sequence m lβ‚‚ β†’ l₁ = lβ‚‚
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
l: length l₁ ≀ length lβ‚‚

l₁ = lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
H: βˆ€ l₁ lβ‚‚ : list M, length lβ‚‚ ≀ length l₁ β†’ is_witnessing_sequence m l₁ β†’ is_witnessing_sequence m lβ‚‚ β†’ l₁ = lβ‚‚
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
l: length l₁ ≀ length lβ‚‚

lβ‚‚ = l₁
apply H; auto.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
H: βˆ€ l₁ lβ‚‚ : list M, length lβ‚‚ ≀ length l₁ β†’ is_witnessing_sequence m l₁ β†’ is_witnessing_sequence m lβ‚‚ β†’ l₁ = lβ‚‚
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
n: Β¬ length l₁ ≀ length lβ‚‚

l₁ = lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
H: βˆ€ l₁ lβ‚‚ : list M, length lβ‚‚ ≀ length l₁ β†’ is_witnessing_sequence m l₁ β†’ is_witnessing_sequence m lβ‚‚ β†’ l₁ = lβ‚‚
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
n: Β¬ length l₁ ≀ length lβ‚‚

length lβ‚‚ ≀ length l₁
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
H: βˆ€ l₁ lβ‚‚ : list M, length lβ‚‚ ≀ length l₁ β†’ is_witnessing_sequence m l₁ β†’ is_witnessing_sequence m lβ‚‚ β†’ l₁ = lβ‚‚
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
n: Β¬ length l₁ ≀ length lβ‚‚
is_witnessing_sequence m l₁
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
H: βˆ€ l₁ lβ‚‚ : list M, length lβ‚‚ ≀ length l₁ β†’ is_witnessing_sequence m l₁ β†’ is_witnessing_sequence m lβ‚‚ β†’ l₁ = lβ‚‚
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
n: Β¬ length l₁ ≀ length lβ‚‚
is_witnessing_sequence m lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
H: βˆ€ l₁ lβ‚‚ : list M, length lβ‚‚ ≀ length l₁ β†’ is_witnessing_sequence m l₁ β†’ is_witnessing_sequence m lβ‚‚ β†’ l₁ = lβ‚‚
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
n: Β¬ length l₁ ≀ length lβ‚‚

is_witnessing_sequence m l₁
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
H: βˆ€ l₁ lβ‚‚ : list M, length lβ‚‚ ≀ length l₁ β†’ is_witnessing_sequence m l₁ β†’ is_witnessing_sequence m lβ‚‚ β†’ l₁ = lβ‚‚
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
n: Β¬ length l₁ ≀ length lβ‚‚
is_witnessing_sequence m lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
H: βˆ€ l₁ lβ‚‚ : list M, length lβ‚‚ ≀ length l₁ β†’ is_witnessing_sequence m l₁ β†’ is_witnessing_sequence m lβ‚‚ β†’ l₁ = lβ‚‚
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
n: Β¬ length l₁ ≀ length lβ‚‚

is_witnessing_sequence m lβ‚‚
auto.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M

length lβ‚‚ ≀ length l₁ β†’ is_witnessing_sequence m l₁ β†’ is_witnessing_sequence m lβ‚‚ β†’ l₁ = lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚

l₁ = lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚

m ∈ witnessed_elements
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
l₁ = lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚

m ∈ witnessed_elements
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚

is_witnessing_sequence m l₁
apply Hw₁.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements

l₁ = lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements

common_length l₁ lβ‚‚ = length lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
l₁ = lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements

common_length l₁ lβ‚‚ = length lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
lst₁: M
Hlst₁: last l₁ = Some lst₁
Hbase₁: lst₁ ∈ eval ρ base
Hhd₁: head l₁ = Some m
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip l₁ (tail l₁))
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements

common_length l₁ lβ‚‚ = length lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length []
lst₁: M
Hlst₁: last [] = Some lst₁
Hbase₁: lst₁ ∈ eval ρ base
Hhd₁: head [] = Some m
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [] (tail []))
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements

common_length [] lβ‚‚ = length lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m, m₁: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length (m₁ :: l₁)
lst₁: M
Hlst₁: last (m₁ :: l₁) = Some lst₁
Hbase₁: lst₁ ∈ eval ρ base
Hhd₁: head (m₁ :: l₁) = Some m
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m₁ :: l₁) (tail (m₁ :: l₁)))
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
common_length (m₁ :: l₁) lβ‚‚ = length lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length []
lst₁: M
Hlst₁: last [] = Some lst₁
Hbase₁: lst₁ ∈ eval ρ base
Hhd₁: head [] = Some m
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [] (tail []))
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements

common_length [] lβ‚‚ = length lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length []
lst₁: M
Hlst₁: None = Some lst₁
Hbase₁: lst₁ ∈ eval ρ base
Hhd₁: head [] = Some m
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [] (tail []))
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements

common_length [] lβ‚‚ = length lβ‚‚
inversion Hlst₁.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m, m₁: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length (m₁ :: l₁)
lst₁: M
Hlst₁: last (m₁ :: l₁) = Some lst₁
Hbase₁: lst₁ ∈ eval ρ base
Hhd₁: head (m₁ :: l₁) = Some m
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m₁ :: l₁) (tail (m₁ :: l₁)))
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements

common_length (m₁ :: l₁) lβ‚‚ = length lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m, m₁: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length (m₁ :: l₁)
lst₁: M
Hlst₁: last (m₁ :: l₁) = Some lst₁
Hbase₁: lst₁ ∈ eval ρ base
Hhd₁: Some m₁ = Some m
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m₁ :: l₁) (tail (m₁ :: l₁)))
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements

common_length (m₁ :: l₁) lβ‚‚ = length lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m, m₁: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length (m₁ :: l₁)
lst₁: M
Hlst₁: last (m₁ :: l₁) = Some lst₁
Hbase₁: lst₁ ∈ eval ρ base
Hhd₁: Some m₁ = Some m
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m₁ :: l₁) (tail (m₁ :: l₁)))
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
H0: m₁ = m

common_length (m :: l₁) lβ‚‚ = length lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length (m :: l₁)
lst₁: M
Hlst₁: last (m :: l₁) = Some lst₁
Hbase₁: lst₁ ∈ eval ρ base
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁)))
Hhd₁: Some m = Some m
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements

common_length (m :: l₁) lβ‚‚ = length lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length (m :: l₁)
lst₁: M
Hlst₁: last (m :: l₁) = Some lst₁
Hbase₁: lst₁ ∈ eval ρ base
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁)))
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements

common_length (m :: l₁) lβ‚‚ = length lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length (m :: l₁)
lst₁: M
Hlst₁: last (m :: l₁) = Some lst₁
Hbase₁: lst₁ ∈ eval ρ base
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁)))
lstβ‚‚: M
Hlstβ‚‚: last lβ‚‚ = Some lstβ‚‚
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
Hhdβ‚‚: head lβ‚‚ = Some m
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip lβ‚‚ (tail lβ‚‚))
Hmwit: m ∈ witnessed_elements

common_length (m :: l₁) lβ‚‚ = length lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁: list M
Hlen12: length [] ≀ length (m :: l₁)
lst₁: M
Hlst₁: last (m :: l₁) = Some lst₁
Hbase₁: lst₁ ∈ eval ρ base
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁)))
lstβ‚‚: M
Hlstβ‚‚: last [] = Some lstβ‚‚
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
Hhdβ‚‚: head [] = Some m
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [] (tail []))
Hmwit: m ∈ witnessed_elements

common_length (m :: l₁) [] = length []
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁: list M
mβ‚‚: M
lβ‚‚: list M
Hlen12: length (mβ‚‚ :: lβ‚‚) ≀ length (m :: l₁)
lst₁: M
Hlst₁: last (m :: l₁) = Some lst₁
Hbase₁: lst₁ ∈ eval ρ base
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁)))
lstβ‚‚: M
Hlstβ‚‚: last (mβ‚‚ :: lβ‚‚) = Some lstβ‚‚
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
Hhdβ‚‚: head (mβ‚‚ :: lβ‚‚) = Some m
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (mβ‚‚ :: lβ‚‚) (tail (mβ‚‚ :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements
common_length (m :: l₁) (mβ‚‚ :: lβ‚‚) = length (mβ‚‚ :: lβ‚‚)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁: list M
Hlen12: length [] ≀ length (m :: l₁)
lst₁: M
Hlst₁: last (m :: l₁) = Some lst₁
Hbase₁: lst₁ ∈ eval ρ base
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁)))
lstβ‚‚: M
Hlstβ‚‚: last [] = Some lstβ‚‚
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
Hhdβ‚‚: head [] = Some m
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [] (tail []))
Hmwit: m ∈ witnessed_elements

common_length (m :: l₁) [] = length []
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁: list M
Hlen12: length [] ≀ length (m :: l₁)
lst₁: M
Hlst₁: last (m :: l₁) = Some lst₁
Hbase₁: lst₁ ∈ eval ρ base
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁)))
lstβ‚‚: M
Hlstβ‚‚: None = Some lstβ‚‚
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
Hhdβ‚‚: head [] = Some m
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [] (tail []))
Hmwit: m ∈ witnessed_elements

common_length (m :: l₁) [] = length []
inversion Hlstβ‚‚.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁: list M
mβ‚‚: M
lβ‚‚: list M
Hlen12: length (mβ‚‚ :: lβ‚‚) ≀ length (m :: l₁)
lst₁: M
Hlst₁: last (m :: l₁) = Some lst₁
Hbase₁: lst₁ ∈ eval ρ base
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁)))
lstβ‚‚: M
Hlstβ‚‚: last (mβ‚‚ :: lβ‚‚) = Some lstβ‚‚
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
Hhdβ‚‚: head (mβ‚‚ :: lβ‚‚) = Some m
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (mβ‚‚ :: lβ‚‚) (tail (mβ‚‚ :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements

common_length (m :: l₁) (mβ‚‚ :: lβ‚‚) = length (mβ‚‚ :: lβ‚‚)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁: list M
mβ‚‚: M
lβ‚‚: list M
Hlen12: length (mβ‚‚ :: lβ‚‚) ≀ length (m :: l₁)
lst₁: M
Hlst₁: last (m :: l₁) = Some lst₁
Hbase₁: lst₁ ∈ eval ρ base
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁)))
lstβ‚‚: M
Hlstβ‚‚: last (mβ‚‚ :: lβ‚‚) = Some lstβ‚‚
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
Hhdβ‚‚: Some mβ‚‚ = Some m
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (mβ‚‚ :: lβ‚‚) (tail (mβ‚‚ :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements

common_length (m :: l₁) (mβ‚‚ :: lβ‚‚) = length (mβ‚‚ :: lβ‚‚)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁: list M
mβ‚‚: M
lβ‚‚: list M
Hlen12: length (mβ‚‚ :: lβ‚‚) ≀ length (m :: l₁)
lst₁: M
Hlst₁: last (m :: l₁) = Some lst₁
Hbase₁: lst₁ ∈ eval ρ base
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁)))
lstβ‚‚: M
Hlstβ‚‚: last (mβ‚‚ :: lβ‚‚) = Some lstβ‚‚
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
Hhdβ‚‚: Some mβ‚‚ = Some m
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (mβ‚‚ :: lβ‚‚) (tail (mβ‚‚ :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements
H0: mβ‚‚ = m

common_length (m :: l₁) (m :: lβ‚‚) = length (m :: lβ‚‚)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length (m :: lβ‚‚) ≀ length (m :: l₁)
lst₁: M
Hlst₁: last (m :: l₁) = Some lst₁
Hbase₁: lst₁ ∈ eval ρ base
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁)))
lstβ‚‚: M
Hlstβ‚‚: last (m :: lβ‚‚) = Some lstβ‚‚
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚)))
Hhdβ‚‚: Some m = Some m
Hmwit: m ∈ witnessed_elements

common_length (m :: l₁) (m :: lβ‚‚) = length (m :: lβ‚‚)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length (m :: lβ‚‚) ≀ length (m :: l₁)
lst₁: M
Hlst₁: last (m :: l₁) = Some lst₁
Hbase₁: lst₁ ∈ eval ρ base
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁)))
lstβ‚‚: M
Hlstβ‚‚: last (m :: lβ‚‚) = Some lstβ‚‚
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements

common_length (m :: l₁) (m :: lβ‚‚) = length (m :: lβ‚‚)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length (m :: lβ‚‚) ≀ length (m :: l₁)
lst₁: M
Hlst₁: last (m :: l₁) = Some lst₁
Hbase₁: lst₁ ∈ eval ρ base
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁)))
lstβ‚‚: M
Hlstβ‚‚: last (m :: lβ‚‚) = Some lstβ‚‚
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements

(if decide (m = m) then S (common_length l₁ lβ‚‚) else 0) = S (length lβ‚‚)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length (m :: lβ‚‚) ≀ length (m :: l₁)
lst₁: M
Hlst₁: last (m :: l₁) = Some lst₁
Hbase₁: lst₁ ∈ eval ρ base
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁)))
lstβ‚‚: M
Hlstβ‚‚: last (m :: lβ‚‚) = Some lstβ‚‚
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements
e: m = m

S (common_length l₁ lβ‚‚) = S (length lβ‚‚)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length (m :: lβ‚‚) ≀ length (m :: l₁)
lst₁: M
Hlst₁: last (m :: l₁) = Some lst₁
Hbase₁: lst₁ ∈ eval ρ base
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁)))
lstβ‚‚: M
Hlstβ‚‚: last (m :: lβ‚‚) = Some lstβ‚‚
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements
n: m β‰  m
0 = S (length lβ‚‚)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length (m :: lβ‚‚) ≀ length (m :: l₁)
lst₁: M
Hlst₁: last (m :: l₁) = Some lst₁
Hbase₁: lst₁ ∈ eval ρ base
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁)))
lstβ‚‚: M
Hlstβ‚‚: last (m :: lβ‚‚) = Some lstβ‚‚
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements
n: m β‰  m

0 = S (length lβ‚‚)
contradiction.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length (m :: lβ‚‚) ≀ length (m :: l₁)
lst₁: M
Hlst₁: last (m :: l₁) = Some lst₁
Hbase₁: lst₁ ∈ eval ρ base
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁)))
lstβ‚‚: M
Hlstβ‚‚: last (m :: lβ‚‚) = Some lstβ‚‚
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements
e: m = m

S (common_length l₁ lβ‚‚) = S (length lβ‚‚)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length (m :: lβ‚‚) ≀ length (m :: l₁)
lst₁: M
Hlst₁: last (m :: l₁) = Some lst₁
Hbase₁: lst₁ ∈ eval ρ base
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁)))
lstβ‚‚: M
Hlstβ‚‚: last (m :: lβ‚‚) = Some lstβ‚‚
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements

S (common_length l₁ lβ‚‚) = S (length lβ‚‚)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length (m :: lβ‚‚) ≀ length (m :: l₁)
lst₁: M
Hlst₁: last (m :: l₁) = Some lst₁
Hbase₁: lst₁ ∈ eval ρ base
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁)))
lstβ‚‚: M
Hlstβ‚‚: last (m :: lβ‚‚) = Some lstβ‚‚
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements

common_length l₁ lβ‚‚ = length lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: S (length lβ‚‚) ≀ S (length l₁)
lst₁: M
Hlst₁: last (m :: l₁) = Some lst₁
Hbase₁: lst₁ ∈ eval ρ base
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁)))
lstβ‚‚: M
Hlstβ‚‚: last (m :: lβ‚‚) = Some lstβ‚‚
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements

common_length l₁ lβ‚‚ = length lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12': S (length lβ‚‚) ≀ S (length l₁)
lst₁: M
Hlst₁: last (m :: l₁) = Some lst₁
Hbase₁: lst₁ ∈ eval ρ base
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁)))
lstβ‚‚: M
Hlstβ‚‚: last (m :: lβ‚‚) = Some lstβ‚‚
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements

common_length l₁ lβ‚‚ = length lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12': S (length lβ‚‚) ≀ S (length l₁)
lst₁: M
Hlst₁: last (m :: l₁) = Some lst₁
Hbase₁: lst₁ ∈ eval ρ base
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁)))
lstβ‚‚: M
Hlstβ‚‚: last (m :: lβ‚‚) = Some lstβ‚‚
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements

length lβ‚‚ ≀ length l₁
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12': S (length lβ‚‚) ≀ S (length l₁)
lst₁: M
Hlst₁: last (m :: l₁) = Some lst₁
Hbase₁: lst₁ ∈ eval ρ base
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁)))
lstβ‚‚: M
Hlstβ‚‚: last (m :: lβ‚‚) = Some lstβ‚‚
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements
Hlen12: length lβ‚‚ ≀ length l₁
common_length l₁ lβ‚‚ = length lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12': S (length lβ‚‚) ≀ S (length l₁)
lst₁: M
Hlst₁: last (m :: l₁) = Some lst₁
Hbase₁: lst₁ ∈ eval ρ base
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁)))
lstβ‚‚: M
Hlstβ‚‚: last (m :: lβ‚‚) = Some lstβ‚‚
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements

length lβ‚‚ ≀ length l₁
lia.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12': S (length lβ‚‚) ≀ S (length l₁)
lst₁: M
Hlst₁: last (m :: l₁) = Some lst₁
Hbase₁: lst₁ ∈ eval ρ base
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁)))
lstβ‚‚: M
Hlstβ‚‚: last (m :: lβ‚‚) = Some lstβ‚‚
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements
Hlen12: length lβ‚‚ ≀ length l₁

common_length l₁ lβ‚‚ = length lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
lst₁: M
Hlst₁: last (m :: l₁) = Some lst₁
Hbase₁: lst₁ ∈ eval ρ base
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁)))
lstβ‚‚: M
Hlstβ‚‚: last (m :: lβ‚‚) = Some lstβ‚‚
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements
Hlen12: length lβ‚‚ ≀ length l₁

common_length l₁ lβ‚‚ = length lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
lst₁: M
Hlst₁: last (m :: l₁) = Some lst₁
Hbase₁: lst₁ ∈ eval ρ base
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁)))
lstβ‚‚: M
Hlstβ‚‚: last (m :: lβ‚‚) = Some lstβ‚‚
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements
len₁: nat
Heqlen₁: len₁ = length l₁
Hlen12: length lβ‚‚ ≀ len₁

common_length l₁ lβ‚‚ = length lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
lst₁: M
Hlst₁: last (m :: l₁) = Some lst₁
Hbase₁: lst₁ ∈ eval ρ base
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁)))
lstβ‚‚: M
Hlstβ‚‚: last (m :: lβ‚‚) = Some lstβ‚‚
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements
len₁: nat
Heqlen₁: len₁ = length l₁
Hlen12: length lβ‚‚ ≀ length l₁

common_length l₁ lβ‚‚ = length lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
lst₁: M
Hlst₁: last (m :: l₁) = Some lst₁
Hbase₁: lst₁ ∈ eval ρ base
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁)))
lstβ‚‚: M
Hlstβ‚‚: last (m :: lβ‚‚) = Some lstβ‚‚
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements
len₁: nat
Heqlen₁: len₁ = length l₁
Hlen12: length lβ‚‚ ≀ length l₁

length l₁ ≀ len₁
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
lst₁: M
Hlst₁: last (m :: l₁) = Some lst₁
Hbase₁: lst₁ ∈ eval ρ base
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁)))
lstβ‚‚: M
Hlstβ‚‚: last (m :: lβ‚‚) = Some lstβ‚‚
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements
len₁: nat
Heqlen₁: len₁ = length l₁
Hlen12: length lβ‚‚ ≀ length l₁
Hlen₁: length l₁ ≀ len₁
common_length l₁ lβ‚‚ = length lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
lst₁: M
Hlst₁: last (m :: l₁) = Some lst₁
Hbase₁: lst₁ ∈ eval ρ base
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁)))
lstβ‚‚: M
Hlstβ‚‚: last (m :: lβ‚‚) = Some lstβ‚‚
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements
len₁: nat
Heqlen₁: len₁ = length l₁
Hlen12: length lβ‚‚ ≀ length l₁

length l₁ ≀ len₁
lia.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
lst₁: M
Hlst₁: last (m :: l₁) = Some lst₁
Hbase₁: lst₁ ∈ eval ρ base
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁)))
lstβ‚‚: M
Hlstβ‚‚: last (m :: lβ‚‚) = Some lstβ‚‚
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements
len₁: nat
Heqlen₁: len₁ = length l₁
Hlen12: length lβ‚‚ ≀ length l₁
Hlen₁: length l₁ ≀ len₁

common_length l₁ lβ‚‚ = length lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
lst₁: M
Hlst₁: last (m :: l₁) = Some lst₁
Hbase₁: lst₁ ∈ eval ρ base
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁)))
lstβ‚‚: M
Hlstβ‚‚: last (m :: lβ‚‚) = Some lstβ‚‚
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements
len₁: nat
Hlen12: length lβ‚‚ ≀ length l₁
Hlen₁: length l₁ ≀ len₁

common_length l₁ lβ‚‚ = length lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat

βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hlen₁: length l₁ ≀ 0
Hlst₁: last (m :: l₁) = Some lst₁
Hlstβ‚‚: last (m :: lβ‚‚) = Some lstβ‚‚
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁)))
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements

common_length l₁ lβ‚‚ = length lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hlen₁: length l₁ ≀ S len₁
Hlst₁: last (m :: l₁) = Some lst₁
Hlstβ‚‚: last (m :: lβ‚‚) = Some lstβ‚‚
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁)))
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements
common_length l₁ lβ‚‚ = length lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hlen₁: length l₁ ≀ 0
Hlst₁: last (m :: l₁) = Some lst₁
Hlstβ‚‚: last (m :: lβ‚‚) = Some lstβ‚‚
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁)))
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements

common_length l₁ lβ‚‚ = length lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
m: M
lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length []
Hlen₁: length [] ≀ 0
Hlst₁: last [m] = Some lst₁
Hlstβ‚‚: last (m :: lβ‚‚) = Some lstβ‚‚
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [m] (tail [m]))
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements

common_length [] lβ‚‚ = length lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
m, d: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length (d :: l₁)
Hlen₁: length (d :: l₁) ≀ 0
Hlst₁: last (m :: d :: l₁) = Some lst₁
Hlstβ‚‚: last (m :: lβ‚‚) = Some lstβ‚‚
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: d :: l₁) (tail (m :: d :: l₁)))
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements
common_length (d :: l₁) lβ‚‚ = length lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
m, d: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length (d :: l₁)
Hlen₁: length (d :: l₁) ≀ 0
Hlst₁: last (m :: d :: l₁) = Some lst₁
Hlstβ‚‚: last (m :: lβ‚‚) = Some lstβ‚‚
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: d :: l₁) (tail (m :: d :: l₁)))
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements

common_length (d :: l₁) lβ‚‚ = length lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
m, d: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length (d :: l₁)
Hlen₁: S (length l₁) ≀ 0
Hlst₁: last (m :: d :: l₁) = Some lst₁
Hlstβ‚‚: last (m :: lβ‚‚) = Some lstβ‚‚
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: d :: l₁) (tail (m :: d :: l₁)))
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements

common_length (d :: l₁) lβ‚‚ = length lβ‚‚
lia.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
m: M
lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length []
Hlen₁: length [] ≀ 0
Hlst₁: last [m] = Some lst₁
Hlstβ‚‚: last (m :: lβ‚‚) = Some lstβ‚‚
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [m] (tail [m]))
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements

common_length [] lβ‚‚ = length lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
m: M
Hlen12: length [] ≀ length []
Hlen₁: length [] ≀ 0
Hlst₁: last [m] = Some lst₁
Hlstβ‚‚: last [m] = Some lstβ‚‚
Hfa₁, Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [m] (tail [m]))
Hmwit: m ∈ witnessed_elements

common_length [] [] = length []
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
m, d: M
lβ‚‚: list M
Hlen12: length (d :: lβ‚‚) ≀ length []
Hlen₁: length [] ≀ 0
Hlst₁: last [m] = Some lst₁
Hlstβ‚‚: last (m :: d :: lβ‚‚) = Some lstβ‚‚
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [m] (tail [m]))
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: d :: lβ‚‚) (tail (m :: d :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements
common_length [] (d :: lβ‚‚) = length (d :: lβ‚‚)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
m: M
Hlen12: length [] ≀ length []
Hlen₁: length [] ≀ 0
Hlst₁: last [m] = Some lst₁
Hlstβ‚‚: last [m] = Some lstβ‚‚
Hfa₁, Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [m] (tail [m]))
Hmwit: m ∈ witnessed_elements

common_length [] [] = length []
reflexivity.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
m, d: M
lβ‚‚: list M
Hlen12: length (d :: lβ‚‚) ≀ length []
Hlen₁: length [] ≀ 0
Hlst₁: last [m] = Some lst₁
Hlstβ‚‚: last (m :: d :: lβ‚‚) = Some lstβ‚‚
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [m] (tail [m]))
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: d :: lβ‚‚) (tail (m :: d :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements

common_length [] (d :: lβ‚‚) = length (d :: lβ‚‚)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
m, d: M
lβ‚‚: list M
Hlen12: length (d :: lβ‚‚) ≀ length []
Hlen₁: length [] ≀ 0
Hlst₁: last [m] = Some lst₁
Hlstβ‚‚: last (m :: d :: lβ‚‚) = Some lstβ‚‚
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [m] (tail [m]))
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: d :: lβ‚‚) (tail (m :: d :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements

length (d :: lβ‚‚) = 0
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
m, d: M
lβ‚‚: list M
Hlen12: length (d :: lβ‚‚) ≀ length []
Hlen₁: length [] ≀ 0
Hlst₁: last [m] = Some lst₁
Hlstβ‚‚: last (m :: d :: lβ‚‚) = Some lstβ‚‚
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [m] (tail [m]))
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: d :: lβ‚‚) (tail (m :: d :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements
H: length (d :: lβ‚‚) = 0
common_length [] (d :: lβ‚‚) = length (d :: lβ‚‚)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
m, d: M
lβ‚‚: list M
Hlen12: length (d :: lβ‚‚) ≀ length []
Hlen₁: length [] ≀ 0
Hlst₁: last [m] = Some lst₁
Hlstβ‚‚: last (m :: d :: lβ‚‚) = Some lstβ‚‚
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [m] (tail [m]))
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: d :: lβ‚‚) (tail (m :: d :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements

length (d :: lβ‚‚) = 0
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
m, d: M
lβ‚‚: list M
Hlen12: S (length lβ‚‚) ≀ 0
Hlen₁: length [] ≀ 0
Hlst₁: last [m] = Some lst₁
Hlstβ‚‚: last (m :: d :: lβ‚‚) = Some lstβ‚‚
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [m] (tail [m]))
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: d :: lβ‚‚) (tail (m :: d :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements

length (d :: lβ‚‚) = 0
lia.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
m, d: M
lβ‚‚: list M
Hlen12: length (d :: lβ‚‚) ≀ length []
Hlen₁: length [] ≀ 0
Hlst₁: last [m] = Some lst₁
Hlstβ‚‚: last (m :: d :: lβ‚‚) = Some lstβ‚‚
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [m] (tail [m]))
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: d :: lβ‚‚) (tail (m :: d :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements
H: length (d :: lβ‚‚) = 0

common_length [] (d :: lβ‚‚) = length (d :: lβ‚‚)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
m, d: M
lβ‚‚: list M
Hlen12: length (d :: lβ‚‚) ≀ length []
Hlen₁: length [] ≀ 0
Hlst₁: last [m] = Some lst₁
Hlstβ‚‚: last (m :: d :: lβ‚‚) = Some lstβ‚‚
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [m] (tail [m]))
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: d :: lβ‚‚) (tail (m :: d :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements
H: length (d :: lβ‚‚) = 0

common_length [] (d :: lβ‚‚) = 0
reflexivity.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hlen₁: length l₁ ≀ S len₁
Hlst₁: last (m :: l₁) = Some lst₁
Hlstβ‚‚: last (m :: lβ‚‚) = Some lstβ‚‚
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁)))
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements

common_length l₁ lβ‚‚ = length lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m: M
l₁: list M
Hlen12: length [] ≀ length l₁
Hlen₁: length l₁ ≀ S len₁
Hlst₁: last (m :: l₁) = Some lst₁
Hlstβ‚‚: last [m] = Some lstβ‚‚
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁)))
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [m] (tail [m]))
Hmwit: m ∈ witnessed_elements

common_length l₁ [] = length []
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m: M
l₁: list M
b: M
lβ‚‚: list M
Hlen12: length (b :: lβ‚‚) ≀ length l₁
Hlen₁: length l₁ ≀ S len₁
Hlst₁: last (m :: l₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁)))
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: b :: lβ‚‚) (tail (m :: b :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements
common_length l₁ (b :: lβ‚‚) = length (b :: lβ‚‚)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m: M
l₁: list M
Hlen12: length [] ≀ length l₁
Hlen₁: length l₁ ≀ S len₁
Hlst₁: last (m :: l₁) = Some lst₁
Hlstβ‚‚: last [m] = Some lstβ‚‚
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁)))
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [m] (tail [m]))
Hmwit: m ∈ witnessed_elements

common_length l₁ [] = length []
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m: M
l₁: list M
Hlen12: length [] ≀ length l₁
Hlen₁: length l₁ ≀ S len₁
Hlst₁: last (m :: l₁) = Some lst₁
Hlstβ‚‚: last [m] = Some lstβ‚‚
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁)))
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [m] (tail [m]))
Hmwit: m ∈ witnessed_elements

0 = length []
reflexivity.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m: M
l₁: list M
b: M
lβ‚‚: list M
Hlen12: length (b :: lβ‚‚) ≀ length l₁
Hlen₁: length l₁ ≀ S len₁
Hlst₁: last (m :: l₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁)))
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: b :: lβ‚‚) (tail (m :: b :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements

common_length l₁ (b :: lβ‚‚) = length (b :: lβ‚‚)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m: M
l₁: list M
b: M
lβ‚‚: list M
Heq: l₁ = []
Hlen12: length (b :: lβ‚‚) ≀ length []
Hlen₁: length [] ≀ S len₁
Hlst₁: last [m] = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [m] (tail [m]))
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: b :: lβ‚‚) (tail (m :: b :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements

common_length [] (b :: lβ‚‚) = length (b :: lβ‚‚)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m: M
l₁: list M
b: M
lβ‚‚: list M
a: M
l'₁: list M
Heq: l₁ = a :: l'₁
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: a :: l'₁) (tail (m :: a :: l'₁)))
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: b :: lβ‚‚) (tail (m :: b :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements
common_length (a :: l'₁) (b :: lβ‚‚) = length (b :: lβ‚‚)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m: M
l₁: list M
b: M
lβ‚‚: list M
Heq: l₁ = []
Hlen12: length (b :: lβ‚‚) ≀ length []
Hlen₁: length [] ≀ S len₁
Hlst₁: last [m] = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [m] (tail [m]))
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: b :: lβ‚‚) (tail (m :: b :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements

common_length [] (b :: lβ‚‚) = length (b :: lβ‚‚)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m: M
l₁: list M
b: M
lβ‚‚: list M
Heq: l₁ = []
Hlen12: S (length lβ‚‚) ≀ 0
Hlen₁: length [] ≀ S len₁
Hlst₁: last [m] = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [m] (tail [m]))
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: b :: lβ‚‚) (tail (m :: b :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements

common_length [] (b :: lβ‚‚) = length (b :: lβ‚‚)
lia.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m: M
l₁: list M
b: M
lβ‚‚: list M
a: M
l'₁: list M
Heq: l₁ = a :: l'₁
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: a :: l'₁) (tail (m :: a :: l'₁)))
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: b :: lβ‚‚) (tail (m :: b :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements

common_length (a :: l'₁) (b :: lβ‚‚) = length (b :: lβ‚‚)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m: M
l₁: list M
b: M
lβ‚‚: list M
a: M
l'₁: list M
Heq: l₁ = a :: l'₁
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) ((m, a) :: match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end)
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: b :: lβ‚‚) (tail (m :: b :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements

common_length (a :: l'₁) (b :: lβ‚‚) = length (b :: lβ‚‚)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m: M
l₁: list M
b: M
lβ‚‚: list M
a: M
l'₁: list M
Heq: l₁ = a :: l'₁
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) ((m, a) :: match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end)
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: b :: lβ‚‚) (tail (m :: b :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements
x: (M * M)%type
l: list (M * M)
H1: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, a)
H2: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
H: x = (m, a)
H0: l = match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end

common_length (a :: l'₁) (b :: lβ‚‚) = length (b :: lβ‚‚)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) ((m, a) :: match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end)
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: b :: lβ‚‚) (tail (m :: b :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements
H1: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, a)
H2: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end

common_length (a :: l'₁) (b :: lβ‚‚) = length (b :: lβ‚‚)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: b :: lβ‚‚) (tail (m :: b :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements
H1: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, a)
H2: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end

common_length (a :: l'₁) (b :: lβ‚‚) = length (b :: lβ‚‚)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: b :: lβ‚‚) (tail (m :: b :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements
Hma: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, a)
H2: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end

common_length (a :: l'₁) (b :: lβ‚‚) = length (b :: lβ‚‚)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: b :: lβ‚‚) (tail (m :: b :: lβ‚‚)))
Hmwit: m ∈ witnessed_elements
Hma: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, a)
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end

common_length (a :: l'₁) (b :: lβ‚‚) = length (b :: lβ‚‚)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) ((m, b) :: match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end)
Hmwit: m ∈ witnessed_elements
Hma: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, a)
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end

common_length (a :: l'₁) (b :: lβ‚‚) = length (b :: lβ‚‚)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) ((m, b) :: match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end)
Hmwit: m ∈ witnessed_elements
Hma: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, a)
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
x: (M * M)%type
l: list (M * M)
H1: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, b)
H2: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
H: x = (m, b)
H0: l = match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end

common_length (a :: l'₁) (b :: lβ‚‚) = length (b :: lβ‚‚)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) ((m, b) :: match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end)
Hmwit: m ∈ witnessed_elements
Hma: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, a)
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
H1: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, b)
H2: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end

common_length (a :: l'₁) (b :: lβ‚‚) = length (b :: lβ‚‚)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, a)
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
H1: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, b)
H2: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end

common_length (a :: l'₁) (b :: lβ‚‚) = length (b :: lβ‚‚)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, a)
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, b)
H2: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end

common_length (a :: l'₁) (b :: lβ‚‚) = length (b :: lβ‚‚)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, a)
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, b)
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end

common_length (a :: l'₁) (b :: lβ‚‚) = length (b :: lβ‚‚)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, a)
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, b)
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end

a ∈ witnessed_elements
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, a)
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, b)
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements
common_length (a :: l'₁) (b :: lβ‚‚) = length (b :: lβ‚‚)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, a)
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, b)
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end

a ∈ witnessed_elements
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, a)
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, b)
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end

is_witnessing_sequence a (a :: l'₁)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, a)
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, b)
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end

βˆƒ lst : M, last (a :: l'₁) = Some lst ∧ lst ∈ eval ρ base
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, a)
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, b)
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
head (a :: l'₁) = Some a ∧ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (a :: l'₁) (tail (a :: l'₁)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, a)
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, b)
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end

βˆƒ lst : M, last (a :: l'₁) = Some lst ∧ lst ∈ eval ρ base
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, a)
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, b)
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end

last (a :: l'₁) = Some lst₁ ∧ lst₁ ∈ eval ρ base
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, a)
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, b)
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end

last (a :: l'₁) = Some lst₁
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, a)
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, b)
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
lst₁ ∈ eval ρ base
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, a)
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, b)
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end

last (a :: l'₁) = Some lst₁
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, a)
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, b)
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end

last (a :: l'₁) = Some lst₁
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, a)
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, b)
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end

last (a :: l'₁) = Some lst₁
apply Hlst₁.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, a)
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, b)
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end

lst₁ ∈ eval ρ base
apply Hbase₁.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, a)
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, b)
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end

head (a :: l'₁) = Some a ∧ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (a :: l'₁) (tail (a :: l'₁)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, a)
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, b)
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end

head (a :: l'₁) = Some a
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, a)
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, b)
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (a :: l'₁) (tail (a :: l'₁)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, a)
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, b)
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end

head (a :: l'₁) = Some a
reflexivity.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, a)
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, b)
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end

Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (a :: l'₁) (tail (a :: l'₁)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, a)
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, b)
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end

Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
apply Hfa₁.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, a)
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, b)
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements

common_length (a :: l'₁) (b :: lβ‚‚) = length (b :: lβ‚‚)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, a)
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, b)
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements

b ∈ witnessed_elements
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, a)
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, b)
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements
Hwitb: b ∈ witnessed_elements
common_length (a :: l'₁) (b :: lβ‚‚) = length (b :: lβ‚‚)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, a)
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, b)
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements

b ∈ witnessed_elements
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, a)
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, b)
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements

is_witnessing_sequence b (b :: lβ‚‚)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, a)
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, b)
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements

βˆƒ lst : M, last (b :: lβ‚‚) = Some lst ∧ lst ∈ eval ρ base
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, a)
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, b)
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements
head (b :: lβ‚‚) = Some b ∧ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (b :: lβ‚‚) (tail (b :: lβ‚‚)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, a)
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, b)
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements

βˆƒ lst : M, last (b :: lβ‚‚) = Some lst ∧ lst ∈ eval ρ base
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, a)
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, b)
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements

last (b :: lβ‚‚) = Some lstβ‚‚ ∧ lstβ‚‚ ∈ eval ρ base
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, a)
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, b)
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements

last (b :: lβ‚‚) = Some lstβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, a)
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, b)
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements
lstβ‚‚ ∈ eval ρ base
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, a)
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, b)
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements

last (b :: lβ‚‚) = Some lstβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, a)
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, b)
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements

last (b :: lβ‚‚) = Some lstβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, a)
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, b)
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements

last (b :: lβ‚‚) = Some lstβ‚‚
apply Hlstβ‚‚.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, a)
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, b)
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements

lstβ‚‚ ∈ eval ρ base
apply Hbaseβ‚‚.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, a)
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, b)
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements

head (b :: lβ‚‚) = Some b ∧ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (b :: lβ‚‚) (tail (b :: lβ‚‚)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, a)
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, b)
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements

head (b :: lβ‚‚) = Some b
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, a)
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, b)
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements
Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (b :: lβ‚‚) (tail (b :: lβ‚‚)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, a)
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, b)
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements

head (b :: lβ‚‚) = Some b
reflexivity.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, a)
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, b)
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements

Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (b :: lβ‚‚) (tail (b :: lβ‚‚)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, a)
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, b)
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements

Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
apply Hfaβ‚‚.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, a)
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, b)
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements
Hwitb: b ∈ witnessed_elements

common_length (a :: l'₁) (b :: lβ‚‚) = length (b :: lβ‚‚)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: m ∈ app_ext (eval ρ step) {[a]}
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (m, b)
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements
Hwitb: b ∈ witnessed_elements

common_length (a :: l'₁) (b :: lβ‚‚) = length (b :: lβ‚‚)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: m ∈ app_ext (eval ρ step) {[a]}
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements
Hwitb: b ∈ witnessed_elements

common_length (a :: l'₁) (b :: lβ‚‚) = length (b :: lβ‚‚)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: m ∈ app_ext (eval ρ step) {[a]}
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements
Hwitb: b ∈ witnessed_elements

app_ext (eval ρ step) {[a]} = {[m]}
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: m ∈ app_ext (eval ρ step) {[a]}
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements
Hwitb: b ∈ witnessed_elements
Ham: app_ext (eval ρ step) {[a]} = {[m]}
common_length (a :: l'₁) (b :: lβ‚‚) = length (b :: lβ‚‚)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: m ∈ app_ext (eval ρ step) {[a]}
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements
Hwitb: b ∈ witnessed_elements

app_ext (eval ρ step) {[a]} = {[m]}
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: βˆ€ m₁ : M, m₁ ∈ witnessed_elements β†’ βˆƒ mβ‚‚ : M, mβ‚‚ ∈ witnessed_elements ∧ app_ext (eval ρ step) {[m₁]} = {[mβ‚‚]}
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: m ∈ app_ext (eval ρ step) {[a]}
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements
Hwitb: b ∈ witnessed_elements

app_ext (eval ρ step) {[a]} = {[m]}
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: βˆ€ m₁ : M, m₁ ∈ witnessed_elements β†’ βˆƒ mβ‚‚ : M, mβ‚‚ ∈ witnessed_elements ∧ app_ext (eval ρ step) {[m₁]} = {[mβ‚‚]}
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: m ∈ app_ext (eval ρ step) {[a]}
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements
Hwitb: b ∈ witnessed_elements
H: βˆƒ mβ‚‚ : M, mβ‚‚ ∈ witnessed_elements ∧ app_ext (eval ρ step) {[a]} = {[mβ‚‚]}

app_ext (eval ρ step) {[a]} = {[m]}
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: βˆ€ m₁ : M, m₁ ∈ witnessed_elements β†’ βˆƒ mβ‚‚ : M, mβ‚‚ ∈ witnessed_elements ∧ app_ext (eval ρ step) {[m₁]} = {[mβ‚‚]}
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: m ∈ app_ext (eval ρ step) {[a]}
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements
Hwitb: b ∈ witnessed_elements
a': M
Ha': app_ext (eval ρ step) {[a]} = {[a']}

app_ext (eval ρ step) {[a]} = {[m]}
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: βˆ€ m₁ : M, m₁ ∈ witnessed_elements β†’ βˆƒ mβ‚‚ : M, mβ‚‚ ∈ witnessed_elements ∧ app_ext (eval ρ step) {[m₁]} = {[mβ‚‚]}
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements
Hwitb: b ∈ witnessed_elements
a': M
Ha': app_ext (eval ρ step) {[a]} = {[a']}
Hma: m ∈ {[a']}

app_ext (eval ρ step) {[a]} = {[m]}
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: βˆ€ m₁ : M, m₁ ∈ witnessed_elements β†’ βˆƒ mβ‚‚ : M, mβ‚‚ ∈ witnessed_elements ∧ app_ext (eval ρ step) {[m₁]} = {[mβ‚‚]}
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements
Hwitb: b ∈ witnessed_elements
a': M
Ha': app_ext (eval ρ step) {[a]} = {[a']}
Hma: m ∈ {[a']}
H: a' = m

app_ext (eval ρ step) {[a]} = {[m]}
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: βˆ€ m₁ : M, m₁ ∈ witnessed_elements β†’ βˆƒ mβ‚‚ : M, mβ‚‚ ∈ witnessed_elements ∧ app_ext (eval ρ step) {[m₁]} = {[mβ‚‚]}
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements
Hwitb: b ∈ witnessed_elements
Hma: m ∈ {[m]}
Ha': app_ext (eval ρ step) {[a]} = {[m]}

app_ext (eval ρ step) {[a]} = {[m]}
apply Ha'.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: m ∈ app_ext (eval ρ step) {[a]}
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements
Hwitb: b ∈ witnessed_elements
Ham: app_ext (eval ρ step) {[a]} = {[m]}

common_length (a :: l'₁) (b :: lβ‚‚) = length (b :: lβ‚‚)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: m ∈ app_ext (eval ρ step) {[a]}
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements
Hwitb: b ∈ witnessed_elements
Ham: app_ext (eval ρ step) {[a]} = {[m]}

app_ext (eval ρ step) {[b]} = {[m]}
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: m ∈ app_ext (eval ρ step) {[a]}
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements
Hwitb: b ∈ witnessed_elements
Ham: app_ext (eval ρ step) {[a]} = {[m]}
Hbm: app_ext (eval ρ step) {[b]} = {[m]}
common_length (a :: l'₁) (b :: lβ‚‚) = length (b :: lβ‚‚)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: m ∈ app_ext (eval ρ step) {[a]}
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements
Hwitb: b ∈ witnessed_elements
Ham: app_ext (eval ρ step) {[a]} = {[m]}

app_ext (eval ρ step) {[b]} = {[m]}
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: βˆ€ m₁ : M, m₁ ∈ witnessed_elements β†’ βˆƒ mβ‚‚ : M, mβ‚‚ ∈ witnessed_elements ∧ app_ext (eval ρ step) {[m₁]} = {[mβ‚‚]}
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: m ∈ app_ext (eval ρ step) {[a]}
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements
Hwitb: b ∈ witnessed_elements
Ham: app_ext (eval ρ step) {[a]} = {[m]}

app_ext (eval ρ step) {[b]} = {[m]}
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: βˆ€ m₁ : M, m₁ ∈ witnessed_elements β†’ βˆƒ mβ‚‚ : M, mβ‚‚ ∈ witnessed_elements ∧ app_ext (eval ρ step) {[m₁]} = {[mβ‚‚]}
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: m ∈ app_ext (eval ρ step) {[a]}
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements
Hwitb: b ∈ witnessed_elements
Ham: app_ext (eval ρ step) {[a]} = {[m]}
H: βˆƒ mβ‚‚ : M, mβ‚‚ ∈ witnessed_elements ∧ app_ext (eval ρ step) {[b]} = {[mβ‚‚]}

app_ext (eval ρ step) {[b]} = {[m]}
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: βˆ€ m₁ : M, m₁ ∈ witnessed_elements β†’ βˆƒ mβ‚‚ : M, mβ‚‚ ∈ witnessed_elements ∧ app_ext (eval ρ step) {[m₁]} = {[mβ‚‚]}
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: m ∈ app_ext (eval ρ step) {[a]}
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements
Hwitb: b ∈ witnessed_elements
Ham: app_ext (eval ρ step) {[a]} = {[m]}
b': M
Hb': app_ext (eval ρ step) {[b]} = {[b']}

app_ext (eval ρ step) {[b]} = {[m]}
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: βˆ€ m₁ : M, m₁ ∈ witnessed_elements β†’ βˆƒ mβ‚‚ : M, mβ‚‚ ∈ witnessed_elements ∧ app_ext (eval ρ step) {[m₁]} = {[mβ‚‚]}
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: m ∈ app_ext (eval ρ step) {[a]}
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements
Hwitb: b ∈ witnessed_elements
Ham: app_ext (eval ρ step) {[a]} = {[m]}
b': M
Hb': app_ext (eval ρ step) {[b]} = {[b']}
Hmb: m ∈ {[b']}

app_ext (eval ρ step) {[b]} = {[m]}
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: βˆ€ m₁ : M, m₁ ∈ witnessed_elements β†’ βˆƒ mβ‚‚ : M, mβ‚‚ ∈ witnessed_elements ∧ app_ext (eval ρ step) {[m₁]} = {[mβ‚‚]}
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: m ∈ app_ext (eval ρ step) {[a]}
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements
Hwitb: b ∈ witnessed_elements
Ham: app_ext (eval ρ step) {[a]} = {[m]}
b': M
Hb': app_ext (eval ρ step) {[b]} = {[b']}
Hmb: m ∈ {[b']}
H: b' = m

app_ext (eval ρ step) {[b]} = {[m]}
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: βˆ€ m₁ : M, m₁ ∈ witnessed_elements β†’ βˆƒ mβ‚‚ : M, mβ‚‚ ∈ witnessed_elements ∧ app_ext (eval ρ step) {[m₁]} = {[mβ‚‚]}
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: m ∈ app_ext (eval ρ step) {[a]}
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements
Hwitb: b ∈ witnessed_elements
Ham: app_ext (eval ρ step) {[a]} = {[m]}
Hmb: m ∈ {[m]}
Hb': app_ext (eval ρ step) {[b]} = {[m]}

app_ext (eval ρ step) {[b]} = {[m]}
apply Hb'.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: m ∈ app_ext (eval ρ step) {[a]}
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements
Hwitb: b ∈ witnessed_elements
Ham: app_ext (eval ρ step) {[a]} = {[m]}
Hbm: app_ext (eval ρ step) {[b]} = {[m]}

common_length (a :: l'₁) (b :: lβ‚‚) = length (b :: lβ‚‚)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: m ∈ app_ext (eval ρ step) {[a]}
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements
Hwitb: b ∈ witnessed_elements
Ham: app_ext (eval ρ step) {[a]} = {[m]}
Hbm: app_ext (eval ρ step) {[b]} = {[m]}

a = b
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: m ∈ app_ext (eval ρ step) {[a]}
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements
Hwitb: b ∈ witnessed_elements
Ham: app_ext (eval ρ step) {[a]} = {[m]}
Hbm: app_ext (eval ρ step) {[b]} = {[m]}
Haeqb: a = b
common_length (a :: l'₁) (b :: lβ‚‚) = length (b :: lβ‚‚)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: m ∈ app_ext (eval ρ step) {[a]}
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements
Hwitb: b ∈ witnessed_elements
Ham: app_ext (eval ρ step) {[a]} = {[m]}
Hbm: app_ext (eval ρ step) {[b]} = {[m]}

a = b
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: m ∈ app_ext (eval ρ step) {[a]}
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements
Hwitb: b ∈ witnessed_elements
Ham: app_ext (eval ρ step) {[a]} = {[m]}
Hbm: app_ext (eval ρ step) {[b]} = {[m]}

a ∈ witnessed_elements
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: m ∈ app_ext (eval ρ step) {[a]}
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements
Hwitb: b ∈ witnessed_elements
Ham: app_ext (eval ρ step) {[a]} = {[m]}
Hbm: app_ext (eval ρ step) {[b]} = {[m]}
b ∈ witnessed_elements
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: m ∈ app_ext (eval ρ step) {[a]}
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements
Hwitb: b ∈ witnessed_elements
Ham: app_ext (eval ρ step) {[a]} = {[m]}
Hbm: app_ext (eval ρ step) {[b]} = {[m]}
rel_of ρ step a = rel_of ρ step b
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: m ∈ app_ext (eval ρ step) {[a]}
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements
Hwitb: b ∈ witnessed_elements
Ham: app_ext (eval ρ step) {[a]} = {[m]}
Hbm: app_ext (eval ρ step) {[b]} = {[m]}

b ∈ witnessed_elements
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: m ∈ app_ext (eval ρ step) {[a]}
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements
Hwitb: b ∈ witnessed_elements
Ham: app_ext (eval ρ step) {[a]} = {[m]}
Hbm: app_ext (eval ρ step) {[b]} = {[m]}
rel_of ρ step a = rel_of ρ step b
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: m ∈ app_ext (eval ρ step) {[a]}
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements
Hwitb: b ∈ witnessed_elements
Ham: app_ext (eval ρ step) {[a]} = {[m]}
Hbm: app_ext (eval ρ step) {[b]} = {[m]}

rel_of ρ step a = rel_of ρ step b
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: m ∈ app_ext (eval ρ step) {[a]}
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements
Hwitb: b ∈ witnessed_elements
Ham: app_ext (eval ρ step) {[a]} = {[m]}
Hbm: app_ext (eval ρ step) {[b]} = {[m]}

app_ext (eval ρ step) {[a]} = app_ext (eval ρ step) {[b]}
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: m ∈ app_ext (eval ρ step) {[a]}
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements
Hwitb: b ∈ witnessed_elements
Ham: app_ext (eval ρ step) {[a]} = {[m]}
Hbm: app_ext (eval ρ step) {[b]} = {[m]}

{[m]} = app_ext (eval ρ step) {[b]}
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: m ∈ app_ext (eval ρ step) {[a]}
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements
Hwitb: b ∈ witnessed_elements
Ham: app_ext (eval ρ step) {[a]} = {[m]}
Hbm: app_ext (eval ρ step) {[b]} = {[m]}

{[m]} = {[m]}
reflexivity.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚: list M
a: M
l'₁: list M
Hlen12: length (b :: lβ‚‚) ≀ length (a :: l'₁)
Hlen₁: length (a :: l'₁) ≀ S len₁
Hlst₁: last (m :: a :: l'₁) = Some lst₁
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hma: m ∈ app_ext (eval ρ step) {[a]}
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (a, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita: a ∈ witnessed_elements
Hwitb: b ∈ witnessed_elements
Ham: app_ext (eval ρ step) {[a]} = {[m]}
Hbm: app_ext (eval ρ step) {[b]} = {[m]}
Haeqb: a = b

common_length (a :: l'₁) (b :: lβ‚‚) = length (b :: lβ‚‚)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hma, Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwita, Hwitb: b ∈ witnessed_elements
Ham, Hbm: app_ext (eval ρ step) {[b]} = {[m]}

common_length (b :: l'₁) (b :: lβ‚‚) = length (b :: lβ‚‚)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements

common_length (b :: l'₁) (b :: lβ‚‚) = length (b :: lβ‚‚)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements

(if decide (b = b) then S (common_length l'₁ lβ‚‚) else 0) = S (length lβ‚‚)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b

S (common_length l'₁ lβ‚‚) = S (length lβ‚‚)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
n: b β‰  b
0 = S (length lβ‚‚)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
n: b β‰  b

0 = S (length lβ‚‚)
contradiction.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b

S (common_length l'₁ lβ‚‚) = S (length lβ‚‚)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b

common_length l'₁ lβ‚‚ = length lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b

length lβ‚‚ ≀ length l'₁
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b
length l'₁ ≀ len₁
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b
last (b :: l'₁) = Some lst₁
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b
last (b :: lβ‚‚) = Some lstβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b
Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (b :: l'₁) (tail (b :: l'₁)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b
Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (b :: lβ‚‚) (tail (b :: lβ‚‚)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b
b ∈ witnessed_elements
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b

length lβ‚‚ ≀ length l'₁
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: S (length lβ‚‚) ≀ S (length l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b

length lβ‚‚ ≀ length l'₁
lia.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b

length l'₁ ≀ len₁
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b
last (b :: l'₁) = Some lst₁
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b
last (b :: lβ‚‚) = Some lstβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b
Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (b :: l'₁) (tail (b :: l'₁)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b
Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (b :: lβ‚‚) (tail (b :: lβ‚‚)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b
b ∈ witnessed_elements
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b

length l'₁ ≀ len₁
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: S (length l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b

length l'₁ ≀ len₁
lia.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b

last (b :: l'₁) = Some lst₁
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b
last (b :: lβ‚‚) = Some lstβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b
Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (b :: l'₁) (tail (b :: l'₁)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b
Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (b :: lβ‚‚) (tail (b :: lβ‚‚)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b
b ∈ witnessed_elements
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b

last (b :: l'₁) = Some lst₁
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b
last (b :: lβ‚‚) = Some lstβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b
Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (b :: l'₁) (tail (b :: l'₁)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b
Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (b :: lβ‚‚) (tail (b :: lβ‚‚)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b
b ∈ witnessed_elements
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b

last (b :: l'₁) = Some lst₁
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b
last (b :: lβ‚‚) = Some lstβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b
Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (b :: l'₁) (tail (b :: l'₁)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b
Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (b :: lβ‚‚) (tail (b :: lβ‚‚)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b
b ∈ witnessed_elements
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b

last (b :: lβ‚‚) = Some lstβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b
Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (b :: l'₁) (tail (b :: l'₁)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b
Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (b :: lβ‚‚) (tail (b :: lβ‚‚)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b
b ∈ witnessed_elements
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b

last (b :: lβ‚‚) = Some lstβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b
Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (b :: l'₁) (tail (b :: l'₁)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b
Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (b :: lβ‚‚) (tail (b :: lβ‚‚)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b
b ∈ witnessed_elements
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b

last (b :: lβ‚‚) = Some lstβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b
Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (b :: l'₁) (tail (b :: l'₁)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b
Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (b :: lβ‚‚) (tail (b :: lβ‚‚)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b
b ∈ witnessed_elements
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b

Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (b :: l'₁) (tail (b :: l'₁)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b
Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (b :: lβ‚‚) (tail (b :: lβ‚‚)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b
b ∈ witnessed_elements
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b

Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b
Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (b :: lβ‚‚) (tail (b :: lβ‚‚)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b
b ∈ witnessed_elements
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b

Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (b :: lβ‚‚) (tail (b :: lβ‚‚)))
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b
b ∈ witnessed_elements
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b

Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b
b ∈ witnessed_elements
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
lst₁: M
Hbase₁: lst₁ ∈ eval ρ base
lstβ‚‚: M
Hbaseβ‚‚: lstβ‚‚ ∈ eval ρ base
len₁: nat
IHlen₁: βˆ€ (m : M) (l₁ lβ‚‚ : list M), length lβ‚‚ ≀ length l₁ β†’ length l₁ ≀ len₁ β†’ last (m :: l₁) = Some lst₁ β†’ last (m :: lβ‚‚) = Some lstβ‚‚ β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: l₁) (tail (m :: l₁))) β†’ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (m :: lβ‚‚) (tail (m :: lβ‚‚))) β†’ m ∈ witnessed_elements β†’ common_length l₁ lβ‚‚ = length lβ‚‚
m, b: M
lβ‚‚, l'₁: list M
Hlst₁: last (m :: b :: l'₁) = Some lst₁
Hlen₁: length (b :: l'₁) ≀ S len₁
Hlen12: length (b :: lβ‚‚) ≀ length (b :: l'₁)
Hlstβ‚‚: last (m :: b :: lβ‚‚) = Some lstβ‚‚
Hmwit: m ∈ witnessed_elements
Hfa₁: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l'₁ with | [] => [] | x2 :: l2 => (b, x2) :: zip l'₁ l2 end
Hmb: m ∈ app_ext (eval ρ step) {[b]}
Hfaβ‚‚: Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) match lβ‚‚ with | [] => [] | x2 :: l2 => (b, x2) :: zip lβ‚‚ l2 end
Hwitb: b ∈ witnessed_elements
e: b = b

b ∈ witnessed_elements
apply Hwitb.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚

l₁ = lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚

l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
l₁ = lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚

l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚

length lβ‚‚ - 1 < common_length l₁ lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚

length lβ‚‚ - 1 < length lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚

length lβ‚‚ > 0
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
H: length lβ‚‚ > 0
length lβ‚‚ - 1 < length lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚

length lβ‚‚ > 0
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁: list M
Hlen12: length [] ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m []
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ [] = length []

length [] > 0
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁: list M
d: M
lβ‚‚: list M
Hlen12: length (d :: lβ‚‚) ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m (d :: lβ‚‚)
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ (d :: lβ‚‚) = length (d :: lβ‚‚)
length (d :: lβ‚‚) > 0
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁: list M
Hlen12: length [] ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m []
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ [] = length []

length [] > 0
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁: list M
Hlen12: length [] ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: (βˆƒ lst : M, last [] = Some lst ∧ lst ∈ eval ρ base) ∧ head [] = Some m ∧ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip [] (tail []))
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ [] = length []

length [] > 0
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁: list M
Hlen12: length [] ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: (βˆƒ lst : M, None = Some lst ∧ lst ∈ eval ρ base) ∧ None = Some m ∧ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) []
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ [] = length []

length [] > 0
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁: list M
Hlen12: length [] ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Contra: None = Some m
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ [] = length []

length [] > 0
inversion Contra.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁: list M
d: M
lβ‚‚: list M
Hlen12: length (d :: lβ‚‚) ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m (d :: lβ‚‚)
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ (d :: lβ‚‚) = length (d :: lβ‚‚)

length (d :: lβ‚‚) > 0
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁: list M
d: M
lβ‚‚: list M
Hlen12: length (d :: lβ‚‚) ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m (d :: lβ‚‚)
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ (d :: lβ‚‚) = length (d :: lβ‚‚)

S (length lβ‚‚) > 0
lia.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
H: length lβ‚‚ > 0

length lβ‚‚ - 1 < length lβ‚‚
lia.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)

l₁ = lβ‚‚
(*assert (Hbasem': eval ρ base lst).*)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)

Β¬ length l₁ > length lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
H: Β¬ length l₁ > length lβ‚‚
l₁ = lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)

Β¬ length l₁ > length lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚

False
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚

length lβ‚‚ - 1 < length l₁
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
Hlt: length lβ‚‚ - 1 < length l₁
False
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚

length lβ‚‚ - 1 < length l₁
lia.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
Hlt: length lβ‚‚ - 1 < length l₁

False
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
Hlt: length lβ‚‚ - 1 < length l₁
Hexm: βˆƒ x : M, l₁ !! (length lβ‚‚ - 1) = Some x

False
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
Hexm: βˆƒ x : M, l₁ !! (length lβ‚‚ - 1) = Some x

False
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m': M
Hm': l₁ !! (length lβ‚‚ - 1) = Some m'

False
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m': M
Hm': l₁ !! (length lβ‚‚ - 1) = Some m'
Hwsm: m' ∈ eval ρ base β†’ is_witnessing_sequence m' (drop (length lβ‚‚ - 1) l₁)

False
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m': M
Hm': l₁ !! (length lβ‚‚ - 1) = Some m'
Hwsm: m' ∈ eval ρ base β†’ is_witnessing_sequence m' (drop (length lβ‚‚ - 1) l₁)
Hwβ‚‚': is_witnessing_sequence m lβ‚‚

False
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m': M
Hm': l₁ !! (length lβ‚‚ - 1) = Some m'
Hwsm: m' ∈ eval ρ base β†’ is_witnessing_sequence m' (drop (length lβ‚‚ - 1) l₁)
Hwβ‚‚': (βˆƒ lst : M, last lβ‚‚ = Some lst ∧ lst ∈ eval ρ base) ∧ head lβ‚‚ = Some m ∧ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip lβ‚‚ (tail lβ‚‚))

False
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m': M
Hm': l₁ !! (length lβ‚‚ - 1) = Some m'
Hwsm: m' ∈ eval ρ base β†’ is_witnessing_sequence m' (drop (length lβ‚‚ - 1) l₁)
lst: M
Hlst1: last lβ‚‚ = Some lst
Hlst2: lst ∈ eval ρ base

False
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m': M
Hm': l₁ !! (length lβ‚‚ - 1) = Some m'
Hwsm: m' ∈ eval ρ base β†’ is_witnessing_sequence m' (drop (length lβ‚‚ - 1) l₁)
lst: M
Hlst2: lst ∈ eval ρ base
Hlst1: lβ‚‚ !! (length lβ‚‚ - 1) = Some lst

False
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m': M
Hm': l₁ !! (length lβ‚‚ - 1) = Some m'
Hwsm: m' ∈ eval ρ base β†’ is_witnessing_sequence m' (drop (length lβ‚‚ - 1) l₁)
lst: M
Hlst2: lst ∈ eval ρ base
Hlst1: lβ‚‚ !! (length lβ‚‚ - 1) = Some lst

m' = lst
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m': M
Hm': l₁ !! (length lβ‚‚ - 1) = Some m'
Hwsm: m' ∈ eval ρ base β†’ is_witnessing_sequence m' (drop (length lβ‚‚ - 1) l₁)
lst: M
Hlst2: lst ∈ eval ρ base
Hlst1: lβ‚‚ !! (length lβ‚‚ - 1) = Some lst
Hlsteqm': m' = lst
False
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m': M
Hm': l₁ !! (length lβ‚‚ - 1) = Some m'
Hwsm: m' ∈ eval ρ base β†’ is_witnessing_sequence m' (drop (length lβ‚‚ - 1) l₁)
lst: M
Hlst2: lst ∈ eval ρ base
Hlst1: lβ‚‚ !! (length lβ‚‚ - 1) = Some lst

m' = lst
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m': M
Hm': l₁ !! (length lβ‚‚ - 1) = Some m'
Hwsm: m' ∈ eval ρ base β†’ is_witnessing_sequence m' (drop (length lβ‚‚ - 1) l₁)
lst: M
Hlst2: lst ∈ eval ρ base
Hlst1: lβ‚‚ !! (length lβ‚‚ - 1) = Some lst

Some m' = Some lst
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m': M
Hm': l₁ !! (length lβ‚‚ - 1) = Some m'
Hwsm: m' ∈ eval ρ base β†’ is_witnessing_sequence m' (drop (length lβ‚‚ - 1) l₁)
lst: M
Hlst2: lst ∈ eval ρ base
Hlst1: lβ‚‚ !! (length lβ‚‚ - 1) = Some lst
H: Some m' = Some lst
m' = lst
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m': M
Hm': l₁ !! (length lβ‚‚ - 1) = Some m'
Hwsm: m' ∈ eval ρ base β†’ is_witnessing_sequence m' (drop (length lβ‚‚ - 1) l₁)
lst: M
Hlst2: lst ∈ eval ρ base
Hlst1: lβ‚‚ !! (length lβ‚‚ - 1) = Some lst

Some m' = Some lst
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m': M
Hm': l₁ !! (length lβ‚‚ - 1) = Some m'
Hwsm: m' ∈ eval ρ base β†’ is_witnessing_sequence m' (drop (length lβ‚‚ - 1) l₁)
lst: M
Hlst2: lst ∈ eval ρ base
Hlst1: lβ‚‚ !! (length lβ‚‚ - 1) = Some lst

l₁ !! (length lβ‚‚ - 1) = Some lst
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m': M
Hm': l₁ !! (length lβ‚‚ - 1) = Some m'
Hwsm: m' ∈ eval ρ base β†’ is_witnessing_sequence m' (drop (length lβ‚‚ - 1) l₁)
lst: M
Hlst2: lst ∈ eval ρ base
Hlst1: lβ‚‚ !! (length lβ‚‚ - 1) = Some lst

l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
apply Hlast12.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m': M
Hm': l₁ !! (length lβ‚‚ - 1) = Some m'
Hwsm: m' ∈ eval ρ base β†’ is_witnessing_sequence m' (drop (length lβ‚‚ - 1) l₁)
lst: M
Hlst2: lst ∈ eval ρ base
Hlst1: lβ‚‚ !! (length lβ‚‚ - 1) = Some lst
H: Some m' = Some lst

m' = lst
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m': M
Hm': l₁ !! (length lβ‚‚ - 1) = Some m'
Hwsm: m' ∈ eval ρ base β†’ is_witnessing_sequence m' (drop (length lβ‚‚ - 1) l₁)
lst: M
Hlst2: lst ∈ eval ρ base
Hlst1: lβ‚‚ !! (length lβ‚‚ - 1) = Some lst
H: Some m' = Some lst
H1: m' = lst

lst = lst
reflexivity.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m': M
Hm': l₁ !! (length lβ‚‚ - 1) = Some m'
Hwsm: m' ∈ eval ρ base β†’ is_witnessing_sequence m' (drop (length lβ‚‚ - 1) l₁)
lst: M
Hlst2: lst ∈ eval ρ base
Hlst1: lβ‚‚ !! (length lβ‚‚ - 1) = Some lst
Hlsteqm': m' = lst

False
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m': M
Hm': l₁ !! (length lβ‚‚ - 1) = Some m'
Hwsm: m' ∈ eval ρ base β†’ is_witnessing_sequence m' (drop (length lβ‚‚ - 1) l₁)
Hlst1: lβ‚‚ !! (length lβ‚‚ - 1) = Some m'
Hlst2: m' ∈ eval ρ base

False
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m': M
Hm': l₁ !! (length lβ‚‚ - 1) = Some m'
Hwsm: is_witnessing_sequence m' (drop (length lβ‚‚ - 1) l₁)
Hlst1: lβ‚‚ !! (length lβ‚‚ - 1) = Some m'
Hlst2: m' ∈ eval ρ base

False
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m': M
Hwsm: is_witnessing_sequence m' (drop (length lβ‚‚ - 1) l₁)
Hlst2: m' ∈ eval ρ base

False
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m': M
Heq: drop (length lβ‚‚ - 1) l₁ = []
Hwsm: is_witnessing_sequence m' []
Hlst2: m' ∈ eval ρ base

False
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m', d: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: l
Hwsm: is_witnessing_sequence m' (d :: l)
Hlst2: m' ∈ eval ρ base
False
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m': M
Heq: drop (length lβ‚‚ - 1) l₁ = []
Hwsm: is_witnessing_sequence m' []
Hlst2: m' ∈ eval ρ base

False
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m': M
Heq: drop (length lβ‚‚ - 1) l₁ = []
Contra: head [] = Some m'
Hlst2: m' ∈ eval ρ base

False
inversion Contra.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m', d: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: l
Hwsm: is_witnessing_sequence m' (d :: l)
Hlst2: m' ∈ eval ρ base

False
(* if `l` is empty, then length l₁ = length lβ‚‚ -> Contradiction *)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m', d: M
Heq: drop (length lβ‚‚ - 1) l₁ = [d]
Hwsm: is_witnessing_sequence m' [d]
Hlst2: m' ∈ eval ρ base

False
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m', d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hwsm: is_witnessing_sequence m' (d :: d0 :: l)
Hlst2: m' ∈ eval ρ base
False
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m', d: M
Heq: drop (length lβ‚‚ - 1) l₁ = [d]
Hwsm: is_witnessing_sequence m' [d]
Hlst2: m' ∈ eval ρ base

False
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m', d: M
Heq: drop (length lβ‚‚ - 1) l₁ = [d]
Hwsm: is_witnessing_sequence m' [d]
Hlst2: m' ∈ eval ρ base

length (drop (length lβ‚‚ - 1) l₁) = 1
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m', d: M
Heq: drop (length lβ‚‚ - 1) l₁ = [d]
Hwsm: is_witnessing_sequence m' [d]
Hlst2: m' ∈ eval ρ base
Hlendrop: length (drop (length lβ‚‚ - 1) l₁) = 1
False
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m', d: M
Heq: drop (length lβ‚‚ - 1) l₁ = [d]
Hwsm: is_witnessing_sequence m' [d]
Hlst2: m' ∈ eval ρ base

length (drop (length lβ‚‚ - 1) l₁) = 1
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m', d: M
Heq: drop (length lβ‚‚ - 1) l₁ = [d]
Hwsm: is_witnessing_sequence m' [d]
Hlst2: m' ∈ eval ρ base

length [d] = 1
reflexivity.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m', d: M
Heq: drop (length lβ‚‚ - 1) l₁ = [d]
Hwsm: is_witnessing_sequence m' [d]
Hlst2: m' ∈ eval ρ base
Hlendrop: length (drop (length lβ‚‚ - 1) l₁) = 1

False
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m', d: M
Heq: drop (length lβ‚‚ - 1) l₁ = [d]
Hwsm: is_witnessing_sequence m' [d]
Hlst2: m' ∈ eval ρ base
Hlendrop: length l₁ - (length lβ‚‚ - 1) = 1

False
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m', d: M
Heq: drop (length lβ‚‚ - 1) l₁ = [d]
Hwsm: is_witnessing_sequence m' [d]
Hlst2: m' ∈ eval ρ base
Hlendrop: length l₁ - (length lβ‚‚ - 1) = 1

length lβ‚‚ β‰  0
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m', d: M
Heq: drop (length lβ‚‚ - 1) l₁ = [d]
Hwsm: is_witnessing_sequence m' [d]
Hlst2: m' ∈ eval ρ base
Hlendrop: length l₁ - (length lβ‚‚ - 1) = 1
H: length lβ‚‚ β‰  0
False
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m', d: M
Heq: drop (length lβ‚‚ - 1) l₁ = [d]
Hwsm: is_witnessing_sequence m' [d]
Hlst2: m' ∈ eval ρ base
Hlendrop: length l₁ - (length lβ‚‚ - 1) = 1

length lβ‚‚ β‰  0
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m', d: M
Heq: drop (length lβ‚‚ - 1) l₁ = [d]
Hwsm: is_witnessing_sequence m' [d]
Hlst2: m' ∈ eval ρ base
Hlendrop: length l₁ - (length lβ‚‚ - 1) = 1
Hcontra': length lβ‚‚ = 0

False
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m', d: M
Heq: drop (length lβ‚‚ - 1) l₁ = [d]
Hwsm: is_witnessing_sequence m' [d]
Hlst2: m' ∈ eval ρ base
Hlendrop: length l₁ - (length lβ‚‚ - 1) = 1
Hcontra': lβ‚‚ = []

False
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁: list M
Hlen12: length [] ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m []
Hmwit: m ∈ witnessed_elements
Hcontra: length l₁ > length []
Hlast12: l₁ !! (length [] - 1) = [] !! (length [] - 1)
Hlcom: common_length l₁ [] = length []
m', d: M
Heq: drop (length [] - 1) l₁ = [d]
Hwsm: is_witnessing_sequence m' [d]
Hlst2: m' ∈ eval ρ base
Hlendrop: length l₁ - (length [] - 1) = 1

False
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁: list M
Hlen12: length [] ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
HContra'': head [] = Some m
Hmwit: m ∈ witnessed_elements
Hcontra: length l₁ > length []
Hlast12: l₁ !! (length [] - 1) = [] !! (length [] - 1)
Hlcom: common_length l₁ [] = length []
m', d: M
Heq: drop (length [] - 1) l₁ = [d]
Hwsm: is_witnessing_sequence m' [d]
Hlst2: m' ∈ eval ρ base
Hlendrop: length l₁ - (length [] - 1) = 1

False
inversion HContra''.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m', d: M
Heq: drop (length lβ‚‚ - 1) l₁ = [d]
Hwsm: is_witnessing_sequence m' [d]
Hlst2: m' ∈ eval ρ base
Hlendrop: length l₁ - (length lβ‚‚ - 1) = 1
H: length lβ‚‚ β‰  0

False
lia.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m', d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hwsm: is_witnessing_sequence m' (d :: d0 :: l)
Hlst2: m' ∈ eval ρ base

False
(* `d0` is a member of `witnessed_elements` *)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m', d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hwsm: is_witnessing_sequence m' (d :: d0 :: l)
Hlst2: m' ∈ eval ρ base
Hwd0: head (tail (d :: d0 :: l)) = Some ?m' β†’ is_witnessing_sequence ?m' (tail (d :: d0 :: l))

False
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m', d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hwsm: is_witnessing_sequence m' (d :: d0 :: l)
Hlst2: m' ∈ eval ρ base
Hwd0: Some d0 = Some ?m' β†’ is_witnessing_sequence ?m' (d0 :: l)

False
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m', d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hwsm: is_witnessing_sequence m' (d :: d0 :: l)
Hlst2: m' ∈ eval ρ base
Hwd0: Some d0 = Some ?m' β†’ is_witnessing_sequence ?m' (d0 :: l)

Some d0 = Some d0
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m', d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hwsm: is_witnessing_sequence m' (d :: d0 :: l)
Hlst2: m' ∈ eval ρ base
Hwd0: Some d0 = Some ?m' β†’ is_witnessing_sequence ?m' (d0 :: l)
Htmp: Some d0 = Some d0
False
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m', d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hwsm: is_witnessing_sequence m' (d :: d0 :: l)
Hlst2: m' ∈ eval ρ base
Hwd0: Some d0 = Some ?m' β†’ is_witnessing_sequence ?m' (d0 :: l)

Some d0 = Some d0
reflexivity.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m', d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hwsm: is_witnessing_sequence m' (d :: d0 :: l)
Hlst2: m' ∈ eval ρ base
Hwd0: Some d0 = Some ?m' β†’ is_witnessing_sequence ?m' (d0 :: l)
Htmp: Some d0 = Some d0

False
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m', d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hwsm: is_witnessing_sequence m' (d :: d0 :: l)
Hlst2: m' ∈ eval ρ base
Hwd0: is_witnessing_sequence d0 (d0 :: l)
Htmp: Some d0 = Some d0

False
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m', d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hwsm: is_witnessing_sequence m' (d :: d0 :: l)
Hlst2: m' ∈ eval ρ base
Hwd0: is_witnessing_sequence d0 (d0 :: l)

False
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m', d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hwsm: is_witnessing_sequence m' (d :: d0 :: l)
Hlst2: m' ∈ eval ρ base
Hwd0: is_witnessing_sequence d0 (d0 :: l)

d0 ∈ witnessed_elements
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m', d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hwsm: is_witnessing_sequence m' (d :: d0 :: l)
Hlst2: m' ∈ eval ρ base
Hwd0: is_witnessing_sequence d0 (d0 :: l)
Hd0we: d0 ∈ witnessed_elements
False
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m', d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hwsm: is_witnessing_sequence m' (d :: d0 :: l)
Hlst2: m' ∈ eval ρ base
Hwd0: is_witnessing_sequence d0 (d0 :: l)

d0 ∈ witnessed_elements
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m', d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hwsm: is_witnessing_sequence m' (d :: d0 :: l)
Hlst2: m' ∈ eval ρ base
Hwd0: is_witnessing_sequence d0 (d0 :: l)

is_witnessing_sequence d0 (d0 :: l)
apply Hwd0.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m', d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hwsm: is_witnessing_sequence m' (d :: d0 :: l)
Hlst2: m' ∈ eval ρ base
Hwd0: is_witnessing_sequence d0 (d0 :: l)
Hd0we: d0 ∈ witnessed_elements

False
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m', d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hwsm: is_witnessing_sequence m' (d :: d0 :: l)
Hlst2: m' ∈ eval ρ base
Hwd0: is_witnessing_sequence d0 (d0 :: l)
Hd0we: d0 ∈ witnessed_elements

m' = d
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m', d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hwsm: is_witnessing_sequence m' (d :: d0 :: l)
Hlst2: m' ∈ eval ρ base
Hwd0: is_witnessing_sequence d0 (d0 :: l)
Hd0we: d0 ∈ witnessed_elements
Heqm'd: m' = d
False
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m', d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hwsm: is_witnessing_sequence m' (d :: d0 :: l)
Hlst2: m' ∈ eval ρ base
Hwd0: is_witnessing_sequence d0 (d0 :: l)
Hd0we: d0 ∈ witnessed_elements

m' = d
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m', d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hwsm: (βˆƒ lst : M, last (d :: d0 :: l) = Some lst ∧ lst ∈ eval ρ base) ∧ head (d :: d0 :: l) = Some m' ∧ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (d :: d0 :: l) (tail (d :: d0 :: l)))
Hlst2: m' ∈ eval ρ base
Hwd0: is_witnessing_sequence d0 (d0 :: l)
Hd0we: d0 ∈ witnessed_elements

m' = d
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m', d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
H: head (d :: d0 :: l) = Some m'
Hlst2: m' ∈ eval ρ base
Hwd0: is_witnessing_sequence d0 (d0 :: l)
Hd0we: d0 ∈ witnessed_elements

m' = d
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m', d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
H: Some d = Some m'
Hlst2: m' ∈ eval ρ base
Hwd0: is_witnessing_sequence d0 (d0 :: l)
Hd0we: d0 ∈ witnessed_elements

m' = d
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m', d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
H: Some d = Some m'
Hlst2: m' ∈ eval ρ base
Hwd0: is_witnessing_sequence d0 (d0 :: l)
Hd0we: d0 ∈ witnessed_elements
H1: d = m'

m' = m'
reflexivity.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
m', d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hwsm: is_witnessing_sequence m' (d :: d0 :: l)
Hlst2: m' ∈ eval ρ base
Hwd0: is_witnessing_sequence d0 (d0 :: l)
Hd0we: d0 ∈ witnessed_elements
Heqm'd: m' = d

False
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hlst2: d ∈ eval ρ base
Hwsm: is_witnessing_sequence d (d :: d0 :: l)
Hwd0: is_witnessing_sequence d0 (d0 :: l)
Hd0we: d0 ∈ witnessed_elements

False
(* `m'=d` matches `app_ext (eval ρ step) d0` *)
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hlst2: d ∈ eval ρ base
Hwsm: is_witnessing_sequence d (d :: d0 :: l)
Hwd0: is_witnessing_sequence d0 (d0 :: l)
Hd0we: d0 ∈ witnessed_elements

d ∈ app_ext (eval ρ step) {[d0]}
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hlst2: d ∈ eval ρ base
Hwsm: is_witnessing_sequence d (d :: d0 :: l)
Hwd0: is_witnessing_sequence d0 (d0 :: l)
Hd0we: d0 ∈ witnessed_elements
H: d ∈ app_ext (eval ρ step) {[d0]}
False
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hlst2: d ∈ eval ρ base
Hwsm: is_witnessing_sequence d (d :: d0 :: l)
Hwd0: is_witnessing_sequence d0 (d0 :: l)
Hd0we: d0 ∈ witnessed_elements

d ∈ app_ext (eval ρ step) {[d0]}
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hlst2: d ∈ eval ρ base
Hwsm: (βˆƒ lst : M, last (d :: d0 :: l) = Some lst ∧ lst ∈ eval ρ base) ∧ head (d :: d0 :: l) = Some d ∧ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) (zip (d :: d0 :: l) (tail (d :: d0 :: l)))
Hwd0: is_witnessing_sequence d0 (d0 :: l)
Hd0we: d0 ∈ witnessed_elements

d ∈ app_ext (eval ρ step) {[d0]}
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hlst2: d ∈ eval ρ base
Hwsm: (βˆƒ lst : M, last (d0 :: l) = Some lst ∧ lst ∈ eval ρ base) ∧ Some d = Some d ∧ Forall (uncurry (Ξ» new old : M, new ∈ app_ext (eval ρ step) {[old]})) ((d, d0) :: match l with | [] => [] | x2 :: l2 => (d0, x2) :: zip l l2 end)
Hwd0: is_witnessing_sequence d0 (d0 :: l)
Hd0we: d0 ∈ witnessed_elements

d ∈ app_ext (eval ρ step) {[d0]}
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hlst2: d ∈ eval ρ base
Hwsm: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) ((d, d0) :: match l with | [] => [] | x2 :: l2 => (d0, x2) :: zip l l2 end)
Hwd0: is_witnessing_sequence d0 (d0 :: l)
Hd0we: d0 ∈ witnessed_elements

d ∈ app_ext (eval ρ step) {[d0]}
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hlst2: d ∈ eval ρ base
Hwsm: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) ((d, d0) :: match l with | [] => [] | x2 :: l2 => (d0, x2) :: zip l l2 end)
Hwd0: is_witnessing_sequence d0 (d0 :: l)
Hd0we: d0 ∈ witnessed_elements
x: (M * M)%type
l0: list (M * M)
H1: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (d, d0)
H2: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l with | [] => [] | x2 :: l2 => (d0, x2) :: zip l l2 end
H: x = (d, d0)
H0: l0 = match l with | [] => [] | x2 :: l2 => (d0, x2) :: zip l l2 end

d ∈ app_ext (eval ρ step) {[d0]}
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hlst2: d ∈ eval ρ base
Hwsm: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) ((d, d0) :: match l with | [] => [] | x2 :: l2 => (d0, x2) :: zip l l2 end)
Hwd0: is_witnessing_sequence d0 (d0 :: l)
Hd0we: d0 ∈ witnessed_elements
H1: uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]}) (d, d0)
H2: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l with | [] => [] | x2 :: l2 => (d0, x2) :: zip l l2 end

d ∈ app_ext (eval ρ step) {[d0]}
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hlst2: d ∈ eval ρ base
Hwsm: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) ((d, d0) :: match l with | [] => [] | x2 :: l2 => (d0, x2) :: zip l l2 end)
Hwd0: is_witnessing_sequence d0 (d0 :: l)
Hd0we: d0 ∈ witnessed_elements
H1: d ∈ app_ext (eval ρ step) {[d0]}
H2: Forall (uncurry (λ new old : M, new ∈ app_ext (eval ρ step) {[old]})) match l with | [] => [] | x2 :: l2 => (d0, x2) :: zip l l2 end

d ∈ app_ext (eval ρ step) {[d0]}
apply H1.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hlst2: d ∈ eval ρ base
Hwsm: is_witnessing_sequence d (d :: d0 :: l)
Hwd0: is_witnessing_sequence d0 (d0 :: l)
Hd0we: d0 ∈ witnessed_elements
H: d ∈ app_ext (eval ρ step) {[d0]}

False
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements βŠ† βˆ… βŠ† eval ρ base ∩ app_ext (eval ρ step) witnessed_elements
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hlst2: d ∈ eval ρ base
Hwsm: is_witnessing_sequence d (d :: d0 :: l)
Hwd0: is_witnessing_sequence d0 (d0 :: l)
Hd0we: d0 ∈ witnessed_elements
H: d ∈ app_ext (eval ρ step) {[d0]}

False
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements βŠ† βˆ… βŠ† eval ρ base ∩ app_ext (eval ρ step) witnessed_elements
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hlst2: d ∈ eval ρ base
Hwsm: is_witnessing_sequence d (d :: d0 :: l)
Hwd0: is_witnessing_sequence d0 (d0 :: l)
Hd0we: d0 ∈ witnessed_elements
H: d ∈ app_ext (eval ρ step) {[d0]}
H1: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements βŠ† βˆ…

False
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements βŠ† βˆ… βŠ† eval ρ base ∩ app_ext (eval ρ step) witnessed_elements
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hlst2: d ∈ eval ρ base
Hwsm: is_witnessing_sequence d (d :: d0 :: l)
Hwd0: is_witnessing_sequence d0 (d0 :: l)
Hd0we: d0 ∈ witnessed_elements
H: d ∈ app_ext (eval ρ step) {[d0]}
H1: βˆ€ x : M, x ∈ eval ρ base ∩ app_ext (eval ρ step) witnessed_elements β†’ x ∈ βˆ…

False
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements βŠ† βˆ… βŠ† eval ρ base ∩ app_ext (eval ρ step) witnessed_elements
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hlst2: d ∈ eval ρ base
Hwsm: is_witnessing_sequence d (d :: d0 :: l)
Hwd0: is_witnessing_sequence d0 (d0 :: l)
Hd0we: d0 ∈ witnessed_elements
H: d ∈ app_ext (eval ρ step) {[d0]}
H1: d ∈ eval ρ base ∩ app_ext (eval ρ step) witnessed_elements β†’ d ∈ βˆ…

False
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements βŠ† βˆ… βŠ† eval ρ base ∩ app_ext (eval ρ step) witnessed_elements
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hlst2: d ∈ eval ρ base
Hwsm: is_witnessing_sequence d (d :: d0 :: l)
Hwd0: is_witnessing_sequence d0 (d0 :: l)
Hd0we: d0 ∈ witnessed_elements
H: d ∈ app_ext (eval ρ step) {[d0]}
H1: False

False
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements βŠ† βˆ… βŠ† eval ρ base ∩ app_ext (eval ρ step) witnessed_elements
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hlst2: d ∈ eval ρ base
Hwsm: is_witnessing_sequence d (d :: d0 :: l)
Hwd0: is_witnessing_sequence d0 (d0 :: l)
Hd0we: d0 ∈ witnessed_elements
H: d ∈ app_ext (eval ρ step) {[d0]}
H1: d ∈ eval ρ base ∩ app_ext (eval ρ step) witnessed_elements β†’ d ∈ βˆ…
d ∈ eval ρ base ∩ app_ext (eval ρ step) witnessed_elements
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements βŠ† βˆ… βŠ† eval ρ base ∩ app_ext (eval ρ step) witnessed_elements
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hlst2: d ∈ eval ρ base
Hwsm: is_witnessing_sequence d (d :: d0 :: l)
Hwd0: is_witnessing_sequence d0 (d0 :: l)
Hd0we: d0 ∈ witnessed_elements
H: d ∈ app_ext (eval ρ step) {[d0]}
H1: False

False
exact H1.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements βŠ† βˆ… βŠ† eval ρ base ∩ app_ext (eval ρ step) witnessed_elements
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hlst2: d ∈ eval ρ base
Hwsm: is_witnessing_sequence d (d :: d0 :: l)
Hwd0: is_witnessing_sequence d0 (d0 :: l)
Hd0we: d0 ∈ witnessed_elements
H: d ∈ app_ext (eval ρ step) {[d0]}
H1: d ∈ eval ρ base ∩ app_ext (eval ρ step) witnessed_elements β†’ d ∈ βˆ…

d ∈ eval ρ base ∩ app_ext (eval ρ step) witnessed_elements
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements βŠ† βˆ… βŠ† eval ρ base ∩ app_ext (eval ρ step) witnessed_elements
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hlst2: d ∈ eval ρ base
Hwsm: is_witnessing_sequence d (d :: d0 :: l)
Hwd0: is_witnessing_sequence d0 (d0 :: l)
Hd0we: d0 ∈ witnessed_elements
H: d ∈ app_ext (eval ρ step) {[d0]}

d ∈ eval ρ base ∩ app_ext (eval ρ step) witnessed_elements
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements βŠ† βˆ… βŠ† eval ρ base ∩ app_ext (eval ρ step) witnessed_elements
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hlst2: d ∈ eval ρ base
Hwsm: is_witnessing_sequence d (d :: d0 :: l)
Hwd0: is_witnessing_sequence d0 (d0 :: l)
Hd0we: d0 ∈ witnessed_elements
H: d ∈ app_ext (eval ρ step) {[d0]}

d ∈ eval ρ base
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements βŠ† βˆ… βŠ† eval ρ base ∩ app_ext (eval ρ step) witnessed_elements
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hlst2: d ∈ eval ρ base
Hwsm: is_witnessing_sequence d (d :: d0 :: l)
Hwd0: is_witnessing_sequence d0 (d0 :: l)
Hd0we: d0 ∈ witnessed_elements
H: d ∈ app_ext (eval ρ step) {[d0]}
d ∈ app_ext (eval ρ step) witnessed_elements
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements βŠ† βˆ… βŠ† eval ρ base ∩ app_ext (eval ρ step) witnessed_elements
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hlst2: d ∈ eval ρ base
Hwsm: is_witnessing_sequence d (d :: d0 :: l)
Hwd0: is_witnessing_sequence d0 (d0 :: l)
Hd0we: d0 ∈ witnessed_elements
H: d ∈ app_ext (eval ρ step) {[d0]}

d ∈ eval ρ base
apply Hlst2.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements βŠ† βˆ… βŠ† eval ρ base ∩ app_ext (eval ρ step) witnessed_elements
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hlst2: d ∈ eval ρ base
Hwsm: is_witnessing_sequence d (d :: d0 :: l)
Hwd0: is_witnessing_sequence d0 (d0 :: l)
Hd0we: d0 ∈ witnessed_elements
H: d ∈ app_ext (eval ρ step) {[d0]}

d ∈ app_ext (eval ρ step) witnessed_elements
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements βŠ† βˆ… βŠ† eval ρ base ∩ app_ext (eval ρ step) witnessed_elements
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hlst2: d ∈ eval ρ base
Hwsm: is_witnessing_sequence d (d :: d0 :: l)
Hwd0: is_witnessing_sequence d0 (d0 :: l)
Hd0we: d0 ∈ witnessed_elements
H: d ∈ app_ext (eval ρ step) {[d0]}

d ∈ app_ext (eval ρ step) witnessed_elements
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements βŠ† βˆ… βŠ† eval ρ base ∩ app_ext (eval ρ step) witnessed_elements
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hlst2: d ∈ eval ρ base
Hwsm: is_witnessing_sequence d (d :: d0 :: l)
Hwd0: is_witnessing_sequence d0 (d0 :: l)
Hd0we: d0 ∈ witnessed_elements
H: d ∈ app_ext (eval ρ step) {[d0]}

d ∈ {[ e | βˆƒ le re : M, le ∈ eval ρ step ∧ re ∈ witnessed_elements ∧ e ∈ app_interp M le re ]}
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements βŠ† βˆ… βŠ† eval ρ base ∩ app_ext (eval ρ step) witnessed_elements
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hlst2: d ∈ eval ρ base
Hwsm: is_witnessing_sequence d (d :: d0 :: l)
Hwd0: is_witnessing_sequence d0 (d0 :: l)
Hd0we: d0 ∈ witnessed_elements
le', re': M
H1: le' ∈ eval ρ step
H2: re' ∈ {[d0]}
H3: d ∈ app_interp M le' re'

d ∈ {[ e | βˆƒ le re : M, le ∈ eval ρ step ∧ re ∈ witnessed_elements ∧ e ∈ app_interp M le re ]}
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements βŠ† βˆ… βŠ† eval ρ base ∩ app_ext (eval ρ step) witnessed_elements
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hlst2: d ∈ eval ρ base
Hwsm: is_witnessing_sequence d (d :: d0 :: l)
Hwd0: is_witnessing_sequence d0 (d0 :: l)
Hd0we: d0 ∈ witnessed_elements
le', re': M
H1: le' ∈ eval ρ step
H2: re' ∈ {[d0]}
H3: d ∈ app_interp M le' re'

βˆƒ re : M, le' ∈ eval ρ step ∧ re ∈ witnessed_elements ∧ d ∈ app_interp M le' re
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements βŠ† βˆ… βŠ† eval ρ base ∩ app_ext (eval ρ step) witnessed_elements
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hlst2: d ∈ eval ρ base
Hwsm: is_witnessing_sequence d (d :: d0 :: l)
Hwd0: is_witnessing_sequence d0 (d0 :: l)
Hd0we: d0 ∈ witnessed_elements
le', re': M
H1: le' ∈ eval ρ step
H2: re' ∈ {[d0]}
H3: d ∈ app_interp M le' re'

le' ∈ eval ρ step ∧ d0 ∈ witnessed_elements ∧ d ∈ app_interp M le' d0
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements βŠ† βˆ… βŠ† eval ρ base ∩ app_ext (eval ρ step) witnessed_elements
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hlst2: d ∈ eval ρ base
Hwsm: is_witnessing_sequence d (d :: d0 :: l)
Hwd0: is_witnessing_sequence d0 (d0 :: l)
Hd0we: d0 ∈ witnessed_elements
le', re': M
H1: le' ∈ eval ρ step
H2: re' ∈ {[d0]}
H3: d ∈ app_interp M le' re'

le' ∈ eval ρ step
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements βŠ† βˆ… βŠ† eval ρ base ∩ app_ext (eval ρ step) witnessed_elements
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hlst2: d ∈ eval ρ base
Hwsm: is_witnessing_sequence d (d :: d0 :: l)
Hwd0: is_witnessing_sequence d0 (d0 :: l)
Hd0we: d0 ∈ witnessed_elements
le', re': M
H1: le' ∈ eval ρ step
H2: re' ∈ {[d0]}
H3: d ∈ app_interp M le' re'
d0 ∈ witnessed_elements ∧ d ∈ app_interp M le' d0
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements βŠ† βˆ… βŠ† eval ρ base ∩ app_ext (eval ρ step) witnessed_elements
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hlst2: d ∈ eval ρ base
Hwsm: is_witnessing_sequence d (d :: d0 :: l)
Hwd0: is_witnessing_sequence d0 (d0 :: l)
Hd0we: d0 ∈ witnessed_elements
le', re': M
H1: le' ∈ eval ρ step
H2: re' ∈ {[d0]}
H3: d ∈ app_interp M le' re'

le' ∈ eval ρ step
apply H1.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements βŠ† βˆ… βŠ† eval ρ base ∩ app_ext (eval ρ step) witnessed_elements
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hlst2: d ∈ eval ρ base
Hwsm: is_witnessing_sequence d (d :: d0 :: l)
Hwd0: is_witnessing_sequence d0 (d0 :: l)
Hd0we: d0 ∈ witnessed_elements
le', re': M
H1: le' ∈ eval ρ step
H2: re' ∈ {[d0]}
H3: d ∈ app_interp M le' re'

d0 ∈ witnessed_elements ∧ d ∈ app_interp M le' d0
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements βŠ† βˆ… βŠ† eval ρ base ∩ app_ext (eval ρ step) witnessed_elements
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hlst2: d ∈ eval ρ base
Hwsm: is_witnessing_sequence d (d :: d0 :: l)
Hwd0: is_witnessing_sequence d0 (d0 :: l)
Hd0we: d0 ∈ witnessed_elements
le', re': M
H1: le' ∈ eval ρ step
H2: re' ∈ {[d0]}
H3: d ∈ app_interp M le' re'

d0 ∈ witnessed_elements
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements βŠ† βˆ… βŠ† eval ρ base ∩ app_ext (eval ρ step) witnessed_elements
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hlst2: d ∈ eval ρ base
Hwsm: is_witnessing_sequence d (d :: d0 :: l)
Hwd0: is_witnessing_sequence d0 (d0 :: l)
Hd0we: d0 ∈ witnessed_elements
le', re': M
H1: le' ∈ eval ρ step
H2: re' ∈ {[d0]}
H3: d ∈ app_interp M le' re'
d ∈ app_interp M le' d0
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements βŠ† βˆ… βŠ† eval ρ base ∩ app_ext (eval ρ step) witnessed_elements
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hlst2: d ∈ eval ρ base
Hwsm: is_witnessing_sequence d (d :: d0 :: l)
Hwd0: is_witnessing_sequence d0 (d0 :: l)
Hd0we: d0 ∈ witnessed_elements
le', re': M
H1: le' ∈ eval ρ step
H2: re' ∈ {[d0]}
H3: d ∈ app_interp M le' re'

d0 ∈ witnessed_elements
apply Hd0we.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements βŠ† βˆ… βŠ† eval ρ base ∩ app_ext (eval ρ step) witnessed_elements
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hlst2: d ∈ eval ρ base
Hwsm: is_witnessing_sequence d (d :: d0 :: l)
Hwd0: is_witnessing_sequence d0 (d0 :: l)
Hd0we: d0 ∈ witnessed_elements
le', re': M
H1: le' ∈ eval ρ step
H2: re' ∈ {[d0]}
H3: d ∈ app_interp M le' re'

d ∈ app_interp M le' d0
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements βŠ† βˆ… βŠ† eval ρ base ∩ app_ext (eval ρ step) witnessed_elements
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
d, d0: M
l: list M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: d0 :: l
Hlst2: d ∈ eval ρ base
Hwsm: is_witnessing_sequence d (d :: d0 :: l)
Hwd0: is_witnessing_sequence d0 (d0 :: l)
Hd0we: d0 ∈ witnessed_elements
le', re': M
H1: le' ∈ eval ρ step
H2: re' ∈ {[d0]}
H3: d ∈ app_interp M le' re'
H: d0 = re'

d ∈ app_interp M le' re'
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements βŠ† βˆ… βŠ† eval ρ base ∩ app_ext (eval ρ step) witnessed_elements
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hcontra: length l₁ > length lβ‚‚
d: M
l: list M
re': M
Heq: drop (length lβ‚‚ - 1) l₁ = d :: re' :: l
Hlst2: d ∈ eval ρ base
Hd0we: re' ∈ witnessed_elements
Hwd0: is_witnessing_sequence re' (re' :: l)
Hwsm: is_witnessing_sequence d (d :: re' :: l)
le': M
H1: le' ∈ eval ρ step
H2: re' ∈ {[re']}
H3: d ∈ app_interp M le' re'

d ∈ app_interp M le' re'
apply H3.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
H: Β¬ length l₁ > length lβ‚‚

l₁ = lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
H: Β¬ length l₁ > length lβ‚‚

length l₁ = length lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
H: Β¬ length l₁ > length lβ‚‚
Hlength12: length l₁ = length lβ‚‚
l₁ = lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
H: Β¬ length l₁ > length lβ‚‚

length l₁ = length lβ‚‚
lia.
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hlen12: length lβ‚‚ ≀ length l₁
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
H: Β¬ length l₁ > length lβ‚‚
Hlength12: length l₁ = length lβ‚‚

l₁ = lβ‚‚
Ξ£: Signature
base, step: Pattern
patt_ind_gen_body:= nest_mu base or nest_mu step $ BoundVarSugar.B0: Pattern
patt_ind_gen_simple_body:= base or step $ patt_free_svar (fresh_svar patt_ind_gen_body): Pattern
Hwfpbase: well_formed_positive base
Hwfpstep: well_formed_positive step
M: Model
ρ: Valuation
F:= let X := fresh_svar patt_ind_gen_body in Fassoc ρ patt_ind_gen_body^{svar:0↦X} X: propset M β†’ propset M
Domain_eq_dec: EqDecision M
Hstep_total_function: is_total_function step witnessed_elements witnessed_elements ρ
Hstep_injective: total_function_is_injective step witnessed_elements ρ
Hbase_step_no_confusion: eval ρ base ∩ app_ext (eval ρ step) witnessed_elements = βˆ…
m: M
l₁, lβ‚‚: list M
Hw₁: is_witnessing_sequence m l₁
Hwβ‚‚: is_witnessing_sequence m lβ‚‚
Hmwit: m ∈ witnessed_elements
Hlcom: common_length l₁ lβ‚‚ = length lβ‚‚
Hlast12: l₁ !! (length lβ‚‚ - 1) = lβ‚‚ !! (length lβ‚‚ - 1)
Hlength12: length l₁ = length lβ‚‚

l₁ = lβ‚‚
apply (common_length_impl_eq _ _ Hlength12 Hlcom). Qed. End injective. End with_eval. End inductive_generation. End with_signature.